Laut dieser Webseite führt das Hinzufügen von '/' am Ende eines rsync-Ziels zu einem anderen Ergebnis als das Nicht-Hinzufügen.
Ich habe versucht, dies zu testen, kann es jedoch nicht verifizieren:
$ mkdir dir{1..3}
$ touch dir1/file
$ rsync -r dir1/ dir2
$ rsync -r dir1/ dir3/
$ ls dir*
dir1:
file
dir2:
file
dir3:
file
Hat das Anhängen eines '/' an das Ziel manchmal tatsächlich eine Verwendung?
A trailing slash on the source changes this behavior to avoid creating an additional directory level at the destination.
:? Wenn ja, beachten Sie bitte, dass Ihr Befehl dem in dem Beispiel auf der Manpage gezeigten überhaupt nicht ähnlich ist.rsync -r dir1/subdir1 dir2/
es , den Inhalt kopieren wirdsubdir1
indir2
aber wenn Sie tatrsync -r dir1/subdir1/ dir2/
es das gesamte Verzeichnis (samt Inhalt) kopiertsubdir1
indir2
so dass Sie würde./dir2/subdir1/
Antworten:
Es macht einen Unterschied, wenn die Quelle eine Datei ist und das Zielverzeichnis nicht existiert. Nehmen Sie zum Beispiel eine Datei
file
als Quelle:$ rsync file dest/
erstellt eine Kopie vonfile
in einem Verzeichnisdest
, wohingegen$ rsync file dest
erstellt eine Kopie derfile
aufgerufenen Dateidest
Hinzufügen (aus den Kommentaren); Wenn bereits ein Verzeichnis
dest
vorhanden ist,file
wirddest
in beiden oben genannten Fällen eine Kopie erstellt .Einfaches Beispiel:
quelle
dest
bereits ein Verzeichnis vorhanden ist, ist der abschließende Schrägstrich nicht erforderlich?dest
vorhanden ist,file
wird in beiden Fällen eine Kopie von erstellt.