rsync не использует -files-from option?

Я пытаюсь запустить 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 ?

Хорошо, я нашел проблему.

  1. Файл, содержащий имена файлов, должен содержать только имена файлов; нет путей, относительных или иных;
  2. После указания --files-from=FILE , rsync требует исходный каталог, в котором можно найти перечисленные файлы.

Таким образом, команда должна быть rsync -a --files-from=~/.rsync_file_list $HOME/ /destination .

.rsync_file_list должен читать:

 file 1 file 2 file 3 

Использование «~» может не работать внутри файла «файлы из», если rsync достаточно умен, чтобы распознавать и переводить символ «~».

Когда вы указываете «~» как часть команды в командной строке вашей оболочки, сама оболочка преобразует «~» в ваш домашний каталог, прежде чем передавать аргумент вместе с программой. Поэтому, даже если вы rsync -a ~/file , то, что rsync «видит» на самом деле является разрешенным путем, или rsync -a /home/foo/file .

Дополнительную информацию см. В разделе Расширение Bash Tilde .