LINUX.ORG.RU
решено ФорумAdmin

Привет! Как экранировать ковычки или как изменить скрипт для rsync?

 , , ,


0

2

Привет всем!

Нужно скриптом перекинуть файлы на другой сервер, но в именах файлов есть пробелы и rsync копирует файл и обрежает имя до первого пробела.

Чтобы файл копировался полностью, нужно использовать апостроф и двойные ковычки, должно получиться что-то такое в упрощённом виде:

rsync $0 '"$0"'

Сам скрипт (упрощённый):

find $(ls ~/www) -type f -name "*.mp4" -print0 | \
xargs -0 -L1 bash -c ' \
...Тут всякие переменные... ; \
rsync -av -P -R "$0" my@server:/var/www/html/user/"$0" '

Если пытаться делать и апостроф и ковычки, то это работает до первых ковычек, например:

bash -c ’ «$0» mymy@server:’ /var/www/html/user/’«$0» ’

Помогите понять, что делаю не так. Уже была тема, где мне подсказали вместо find -exec {} \ ; использовать find -print0 | xargs



Последнее исправление: SaintAnd (всего исправлений: 2)

Нашёл решение проблемы

Нужно было добавить для rsync параметр «s» или «–protect-args» для передачи файлов с пробелами и спецсимволами

find $(ls ~/www) -type f -name "*.mp4" -print0 | \
xargs -0 -L1 bash -c ' \
...Тут всякие переменные... ; \
rsync -sav -P -R "$0" my@server:/var/www/html/user/"$0" '
SaintAnd
() автор топика