rsync benutzt die Option --files-from nicht?


13

Ich versuche zu laufen rsync -a --files-from=~/.rsync_file_list ~/destinationund 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_listenthä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-fromOption?


versuchensed "s#~/#/home/wolf/#g" -ie ~/.rsync_file_list
— Andy

@ Andy: Ach, das gleiche Ergebnis.
— Wolf

Antworten:


20

Okay, ich habe das Problem gefunden.

  1. Die Datei mit Dateinamen darf nur enthalten Dateinamen . keine Pfade, weder relativ noch anderweitig;
  2. Nach der Angabe --files-from=FILEbenö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:

file 1
file 2
file 3

3
Korrektur: Dateinamen in der angegebenen Datei sind relativ zum Quellverzeichnis, dürfen aber nicht darüber liegen (nein ../). Führende Schrägstriche werden ignoriert, sodass absolute Pfade nicht funktionieren.
— Wolf

Ich glaube, Sie können Ihre eigene Antwort bearbeiten und diese sehr nette Ergänzung und relevante Information hinzufügen, die Sie später in der Antwort selbst herausgefunden haben.
— Vinícius M

0

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, was rsync"sieht", tatsächlich der aufgelöste Pfad, oder rsync -a /home/foo/file.

Weitere Informationen finden Sie unter Bash-Tilde-Erweiterung .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.