Próbuję uruchomić rsync -a --files-from=~/.rsync_file_list ~/destination
i 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_list
zawiera 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-from
opcji?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Odpowiedzi:
OK, znalazłem problem.
--files-from=FILE
rsync 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ć:źródło
../
). Wiodące ukośniki będą ignorowane, więc ścieżki bezwzględne nie działają.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, corsync
„widzi”, jest w rzeczywistości rozwiązaną ścieżką, lubrsync -a /home/foo/file
.Aby uzyskać więcej informacji, zobacz Bild Tilde Expansion .
źródło