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


13

Я пытаюсь запустить , 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
Энди

@ Энди: Увы, тот же результат.
Вольф

Ответы:


20

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

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

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

.rsync_file_list должен прочесть:

file 1
file 2
file 3

3
Исправление: Имена файлов в данном файле относятся к исходному каталогу, но не могут быть над ним (нет ../). Начальные косые черты будут игнорироваться, поэтому абсолютные пути не работают.
Вольф

Я считаю, что вы можете отредактировать свой собственный ответ и добавить это очень хорошее дополнение и соответствующую информацию, которую вы узнали позже в самом ответе.
Vinícius M

0

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

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

Посмотрите Расширение Bash Tilde для получения дополнительной информации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.