Я пытаюсь запустить , rsync -a --files-from=~/.rsync_file_list ~/destination
и он говорит мне: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
. Может кто-нибудь просветить меня, что я делаю не так?
Файл ~/.rsync_file_list
просто содержит список имен файлов с предваряющим ~/
, разделенных символами новой строки (хотя я также попытался перечислить их все в одной строке, с тем же результатом).
Если я запускаю rsync -a ~/file ~/file2 ~/file3 ~/destination
это работает просто отлично. Так что же мне не хватает в --files-from
варианте?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Ответы:
Хорошо, я нашел проблему.
--files-from=FILE
rsync требуется исходный каталог, в котором можно найти перечисленные файлы.Так что команда должна быть
rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
..rsync_file_list
должен прочесть:источник
../
). Начальные косые черты будут игнорироваться, поэтому абсолютные пути не работают.Использование «~» может не работать внутри файла «файлы из», если rsync не достаточно умен, чтобы распознавать и переводить символ «~».
Когда вы указываете «~» как часть команды в командной строке вашей оболочки, именно сама оболочка преобразует «~» в ваш домашний каталог перед передачей аргумента программе. Таким образом, даже если вы печатаете
rsync -a ~/file
, то, чтоrsync
«видит», на самом деле является разрешенным путем, илиrsync -a /home/foo/file
.Посмотрите Расширение Bash Tilde для получения дополнительной информации.
источник