Gibt es eine Möglichkeit, mit rsync die vollständigen Dateipfade für alle Dateien zu drucken, die sich unterscheiden, ohne dass tatsächlich Dateien übertragen werden?
Alternativ brauche ich eine Möglichkeit, um die Dateien über zwei Bäume (über SSH) zu verteilen, die nur auf einer Änderung der Größe oder der Zeit der letzten Änderung basieren.
--dry-run
hängen von Ihrer Verwendung von-v
und ab.--progress options
Wenn Sie also überhaupt keine Ausgabe erhalten, aktivieren Sie diese Optionen nach Bedarf. Mir ist aufgefallen, dass Verzeichnisnamen gesendet werden, auch wenn sich die Dateien nicht geändert haben. Sie können diese jedoch herausfiltern, indem Sie die Ausgabe durchlaufen lassensed
.Ich bevorzuge es, das --out-Format zu verwenden, um die Details zu sehen, und es auf weniger zu leiten:
quelle
rsync -rvn localdir targetdir
Das -n bedeutet, dass nur Aktionen angezeigt werden (ohne dass eine Aktion ausgeführt wird).
Beachte, dass du das 'v' brauchst, sonst wird dir nichts angezeigt! (die restlichen Antworten vergessen dies ...)
quelle
Aufbauend auf anderen Antworten und https://serverfault.com/a/618740/114520
--dry-run
(oder-n
), um Änderungen zu vermeiden--itemize-changes
(oder-i
), um nach Änderungen zu suchen--archive
(oder-a
), um alle Unterverzeichnisse abzurufenegrep
Einträge zum Ausfiltern von Punkt beginnen (keine Veränderung)Welches gibt Ihnen:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\."
Wenn Sie nur eine Möglichkeit wünschen, können Sie den Befehl ändern:
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|<)"
rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^(\.|>)"
Und wenn Sie nur die Dateien benötigen, fügen Sie einfach
awk
Magie hinzu:rsync -nia source destination | egrep -v "sending incremental file list" | egrep -v "^\." | awk '{print $2}'
quelle
Ich würde für so etwas gehen:
Beispielsweise:
quelle
Die Wahrheit der Sache ist , dass , wenn Sie laufen
rsync -v ...
und es gibt einen Dateinamen auf den Bildschirm, die Datei wird übertragen (oder hätte übertragen wurden, wenn Sie einen --dry-run tun). Um festzustellen , warum war rsync darüber zu übertragen, verwendet itemize - Modus: https://serverfault.com/a/618740/27813Wie andere angemerkt haben, vergleicht rsync standardmäßig nur anhand der Dateigröße und des Zeitstempels, die beide übereinstimmen müssen. Andernfalls wird eine "Delta-Kopie" für diese Datei gestartet. Wenn Sie wirklich sehen möchten, welche Dateien unterschiedlich sind, verwenden Sie den Prüfsummenmodus "-c".
quelle