Ich habe mit Bash viele Dateien in vielen Ordnern (~54 GB) von einem ext4-Speicherort zu einem anderen kopiert cp ~/1 ~/2 -d -r -v -i
. Dann wollte ich überprüfen, ob alle Dateien richtig kopiert wurden, also habe ich ausgeführt rsync --delete -vturOn ~/1 ~/2
, aber rsync wollte alle Dateien kopieren. Warum ist das so?
cp
PS: Ich wollte es mit verwenden -a
, habe es aber -d
versehentlich verwendet.
Edit: Eine AntwortHier--itemize-changes
hat mich dazu gebracht, das Flag zu verwenden , das mir >f..t......
für alle Dateien angezeigt wird. Die Manpage gibt an, dass die t
Änderungszeiten unterschiedlich sind, der Dateityp eine Datei ist ( f
) und nur die Elementattribute geändert werden ( .
). Ist das richtig? Es werden also nur die Änderungszeiten geändert?
Bearbeiten: Ich habe das ausgeführt rsync
(ohne das -n
) und obwohl die t
Änderungszeiten unterschiedlich waren, wurden alle Dateien erneut kopiert (der eigentliche Dateiinhalt), was unerwartet ist, da rsync ohnehin eine Diff-Kopie durchführen sollte, was zu beachten ist, oder?
Bearbeiten: Die Synchronisierung wurde gestoppt und ohne den -t
Parameter erneut ausgeführt. Jetzt zeigten die aufgelisteten Änderungen „T“ statt t
. Es scheint, dass ich alle Dateien mindestens einmal über rsync kopieren muss, wenn ich rsync in Zukunft auf diese Dateien anwenden möchte.
Edit: Habe die Zieldateien gelöscht und alles nochmal mit rsync mit -van
Parametern kopiert.
Antwort1
Aus der rsync-Dokumentation:
Rsync findet Dateien, die übertragen werden müssen, mithilfe eines „Quick Check“-Algorithmus (standardmäßig), der nach Dateien sucht, deren Größe oder deren letzte Änderungszeitpunkt sich geändert hat.
Wenn sowohl die Quelle als auch das Ziel lokal sind, rsync
wird die --whole-file
Option standardmäßig ausgeführt.
-W, --whole-file
Mit dieser Option wird der Delta-Transfer-Algorithmus von rsync nicht verwendet, sondern die gesamte Datei wird so gesendet, wie sie ist. Die Übertragung kann schneller sein, wenn diese Option verwendet wird, wenn die Bandbreite zwischen Quell- und Zielcomputer höher ist als die Bandbreite zur Festplatte (insbesondere, wenn die „Festplatte“ tatsächlich ein vernetztes Dateisystem ist). Dies ist die Standardeinstellung, wenn sowohl Quelle als auch Ziel als lokale Pfade angegeben sind, aber nur, wenn keine Option zum Stapelschreiben aktiviert ist.
Ich bin nicht sicher, aber es hört sich so an, als ob Sie diese Option wünschen --checksum
.
-c, --checksum skip based on checksum, not mod-time & size
Beachten Sie, dass zum Berechnen der Prüfsumme sowohl die Quell- als auch die Zieldateien von der Festplatte gelesen werden müssen.
Mehr dazu: