Ich versuche zu laufen rsync -a --files-from=~/.rsync_file_list ~/destination
und es sagt mir: rsync error: syntax or usage error (code 1) at options.c(1652) [client=3.0.7]
. Kann mir jemand erklären, was ich falsch mache?
Die Datei ~/.rsync_file_list
enthält nur eine Liste von Dateinamen mit vorangestelltem ~/
Zeichen, die durch Zeilenumbrüche getrennt sind (obwohl ich auch versucht habe, sie alle in derselben Zeile mit demselben Ergebnis aufzulisten).
Wenn ich renne rsync -a ~/file ~/file2 ~/file3 ~/destination
, funktioniert es einwandfrei. Was vermisse ich also an der --files-from
Option?
sed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
Antworten:
Okay, ich habe das Problem gefunden.
--files-from=FILE
benötigt rsync ein Quellverzeichnis, in dem sich die aufgelisteten Dateien befinden.So sollte der Befehl sein
rsync -a --files-from=~/.rsync_file_list $HOME/ /destination
..rsync_file_list
sollte lesen:quelle
../
). Führende Schrägstriche werden ignoriert, sodass absolute Pfade nicht funktionieren.Die Verwendung des "~" funktioniert möglicherweise nicht in einer "files-from" -Datei, es sei denn, rsync ist intelligent genug, um das "~" -Symbol zu erkennen und zu übersetzen.
Wenn Sie ein "~" als Teil eines Befehls in der Befehlszeile Ihrer Shell angeben , konvertiert die Shell selbst "~" in Ihr Ausgangsverzeichnis, bevor Sie das Argument an das Programm weitergeben. Also, obwohl Sie tippen
rsync -a ~/file
, ist das, wasrsync
"sieht", tatsächlich der aufgelöste Pfad, oderrsync -a /home/foo/file
.Weitere Informationen finden Sie unter Bash-Tilde-Erweiterung .
quelle