Erste Datei in alphabetischer Reihenfolge nicht mit rsync kopiert

Erste Datei in alphabetischer Reihenfolge nicht mit rsync kopiert

Ich verwende den folgenden Befehl, um eine vollständige, rekursive Kopie des Inhalts eines Verzeichnisses in ein anderes zu erstellen:

rsync -avzhe /path1/to1/dir1/* /path2/to2/dir2/

Es funktioniert wie erwartet, außer dass die erste Datei (in alphabetischer Reihenfolge), sei es ein Verzeichnis oder eine Datei, nicht kopiert wird. Alle anderen Dateien werden kopiert. Warum?

Mein Betriebssystem ist MacOS 10.14.6, falls das wichtig ist.

Antwort1

Die -eOption benötigt ein Argument, daher wird dafür der erste Dateiname verwendet. Ich bin nicht sicher, warum Sie das möchten, -eda dadurch der Befehl festgelegt wird, der zum Herstellen einer Verbindung mit der Fernbedienung verwendet werden soll, Sie jedoch keine Fernbedienung verwenden. Entfernen Sie einfach das -e.

Antwort2

Um eine vollständige Kopie des Verzeichnisses /path1/to1/dir1mit dem Namen zu erstellen /path2/to2/dir2, verwenden Sie

rsync -av /path2/to1/dir1/ /path2/to2/dir2

Es macht keinen Sinn, Komprimierung ( -z) für eine lokale Kopie zu verwenden. Die -eOption gibt den Befehl an, der zum Herstellen der Netzwerkverbindung verwendet wird (weshalb Ihr Befehl beim Kopieren der ersten Datei fehlschlägt; rsyncverwendet es als Optionsargument für die -eOption), daher sollte dies in diesem Szenario ebenfalls entfernt werden.

Verwenden Sie es außerdem nicht *am Ende des Quellpfads, da dies normalerweise nicht mit versteckten Namen übereinstimmen würde. Das Zusammenfassen aller Namen darunter dir1könnte möglicherweise auch zu einer Liste führen, die zu lang ist, als dass der Befehl überhaupt ausgeführt werden könnte.

Stellen Sie einfach sicher, dass der Quellpfad mit einem Schrägstrich endet. Ein Schrägstrich am Ende des Zielpfads macht keinen Unterschied. Das Entfernen des Schrägstrichs aus dem Quellpfad würde hineinkopieren dir1. dir2Ein Schrägstrich am Ende des Quellpfads erstellt dir2eine Kopie von dir1.

Darüber hinaus möchten Sie möglicherweise -Hsicherstellen, dass Hardlinks am Ziel ordnungsgemäß hergestellt werden, und --sparsewenn Sie wissen, dass Sie Dateien kopieren, die möglicherweise spärlich sind (z. B. vorab zugewiesene Disk-Images).

Verwenden Sie --deletees auchlöschenEinträge vom Ziel, die nicht Teil der Quelldateihierarchie sind. Verwenden Sie dies mit Vorsicht. Möglicherweise möchten Sie zuerst einen Testlauf mit -n( --dry-run) durchführen.

verwandte Informationen