rsync nie używa opcji --files-from?

13

Próbuję uruchomić rsync -a --files-from=~/.rsync_file_list ~/destinationi mówi mi: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]. Czy ktoś może mnie oświecić, co robię źle?

Plik ~/.rsync_file_listzawiera tylko poprzednią listę nazw plików ~/, oddzielonych znakami nowej linii (chociaż próbowałem też wyświetlić je wszystkie w tym samym wierszu, z tym samym rezultatem).

Jeśli uruchomię rsync -a ~/file ~/file2 ~/file3 ~/destination, działa dobrze. Czego mi brakuje w tej --files-fromopcji?

Wilk
źródło
spróbujsed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Andy
@Andy: Niestety, ten sam wynik.
Wolf

Odpowiedzi:

20

OK, znalazłem problem.

  1. Plik zawierający nazwy plików musi zawierać tylko nazwy plików; brak ścieżek, względnych lub innych;
  2. Po określeniu --files-from=FILErsync wymaga katalogu źródłowego, w którym można znaleźć wymienione pliki.

Tak powinno być polecenie rsync -a --files-from=~/.rsync_file_list $HOME/ /destination.

.rsync_file_list powinien przeczytać:

file 1
file 2
file 3
Wilk
źródło
3
Poprawka: Nazwy plików w danym pliku SĄ względne w stosunku do katalogu źródłowego, ale nie mogą być nad nim (nie ../). Wiodące ukośniki będą ignorowane, więc ścieżki bezwzględne nie działają.
Wolf
Wierzę, że możesz edytować własną odpowiedź i dodać ten bardzo miły dodatek i istotną informację, którą znalazłeś później w samej odpowiedzi.
Vinícius M
0

Użycie „~” może nie działać w pliku „file-from”, chyba że rsync jest wystarczająco inteligentny, aby rozpoznać i przetłumaczyć symbol „~”.

Gdy określisz „~” jako część polecenia w wierszu poleceń powłoki, to sama powłoka konwertuje „~” do katalogu domowego przed przekazaniem argumentu do programu. Więc nawet jeśli piszesz rsync -a ~/file, to, co rsync„widzi”, jest w rzeczywistości rozwiązaną ścieżką, lub rsync -a /home/foo/file.

Aby uzyskać więcej informacji, zobacz Bild Tilde Expansion .

dwanaście17
źródło