Ich finde mehrere Antworten auf die Frage, wollte also die Leute fragen, die sie tatsächlich benutzen, anstatt nur das größte Blog zu machen, indem ich zufällig halbnutzlose Informationen ausfülle.
Szenario: Ich
rsync -av --progress /dir/a /dir/b
und es macht sein Ding.
Ich füge neue Dateien zu / dir / a hinzu und führe denselben Befehl erneut aus. Er weiß, was er getan hat, und kopiert nur die neuen Dateien.
Ich füge neue Dateien zu / dir / a hinzu und benenne einige Dateien in / dir / b um. Vielleicht lösche ich auch einige.
rsync -av --progress /dir/a /dir/b
Was wird kopiert, wenn ich erneut starte? Nur die neuen Dateien, weil es weiß, was es zuvor kopiert hat, oder die Dateien, die auch umbenannt / gelöscht wurden, weil sie nicht mehr vorhanden sind.
Und als Bonus, wenn die zuvor kopierten Dateien werden erneut kopiert, ist es eine Möglichkeit , das zu verhindern, so dass nur neue Ergänzungen / dir / a kopiert werden?
Im Moment überprüfe ich die Dinge gerne manuell, aber wenn die Daten größer werden, werde ich mehr Automatisierung benötigen, um diese Aufgabe auszuführen.
-i
Flagge ist sehr praktisch. Für jede Datei gibt es eine Übereinstimmungszeichenfolge, die dekodiert werden kann, um festzustellen, warum sie übereinstimmt (Flag für die Mod-Zeit, Flag für die Größe usw.)Antworten:
Nein, es weiß nicht, was es in einem vorherigen Lauf getan hat. Es vergleicht die empfangsseitigen Daten mit den zu sendenden Daten. Bei ausreichend kleinen Daten ist dies nicht ersichtlich. Wenn Sie jedoch über ausreichend große Verzeichnisse verfügen, ist der Zeitaufwand für den Vergleich vor dem eigentlichen Beginn des Kopiervorgangs leicht zu spüren.
Standardmäßig werden die Änderungszeiten und -größen der Dateien überprüft. Von
man rsync
:Und:
Beachten Sie, dass diese nicht durch die von Ihnen verwendeten Optionen impliziert werden.
-a
ist:quelle
--fuzzy
einmaliges Angeben werden sie im selben Verzeichnis als gleich erkannt. Durch--fuzzy
zweimaliges Verwenden wird diese Funktion auf andere Standorte ausgeweitet. Sieheman rsync
für weitere Einzelheiten. Einer der Hauptgründe für die Verwendungrsync
ist natürlich die Fähigkeit, nur die Teile einer Datei zu kopieren, die sich geändert haben. Dies kann die Übertragung über ein Netzwerk erheblich beschleunigen. Übrigens wird die Prüfsummenoption oben zur Erläuterung der Funktionsweise erwähntrsync
. In den meisten Fällen sollte es nicht verwendet werden.Allgemeines
Wenn ich das richtig verstehe,
rsync -av
hat es keinen Speicher, also kopiert es die Dateien, die umbenannt / gelöscht wurden, auch, weil sie in der Quelle vorhanden sind, aber nicht mehr im Ziel vorhanden sind.Tipps
Verwenden Sie die Option
-n
"Probelauf", um zu überprüfen, was passiert, bevor Sie Ihrersync
Befehlszeile ausführen .Beachten Sie die besondere Bedeutung eines abschließenden Schrägstrichs nach dem Quellverzeichnis und sehen Sie den Unterschied zwischen
und
was im Handbuch beschrieben ist
man rsync
.Beispiel
In Ihrem speziellen Fall (Hinzufügen einer Datei zum Quellverzeichnis 'a' und Entfernen einer Datei aus dem Zielverzeichnis 'b') werden sowohl die hinzugefügte Datei als auch die zuvor kopierte Datei hinzugefügt, da sie sich noch im Quellverzeichnis befindet. Dies geschieht sowohl mit als auch ohne die Option,
-u
und ich kenne keine Optionrsync
, um das Problem so einfach zu beheben, wenn Sie es im Quellverzeichnis behalten möchten.Sie können es jedoch aus dem Quellverzeichnis entfernen oder den Dateinamen in die Datei einfügen
excluded
und die Option--exclude-from=excluded
(für viele Dateien) oder einfach--exclude=PATTERN
für eine oder mehrere Dateien verwenden.Alternative:
unison
Möglicherweise möchten Sie das Tool testen
unison
, bei dem es sich um ein Synchronisierungstool handelt . Es bietet eine visuelle Methode, um Sonderfälle zu identifizieren und zu entscheiden, was zu tun ist. Es gibt eine GUI-Version (unison-gtk
).quelle
unison-gtk
seit mehreren Jahren und bin zufrieden damit. (Ich benutzersync
auch.)Es werden nur die neuen Dateien in / dir / a kopiert. Was auch immer Sie in / dir / b tun, wird ignoriert, es sei denn, Sie verwenden die Option --delete. In diesem Fall werden umbenannte Dateien in / dir / b gelöscht. Es wird / dir / b zwingen, genau wie / dir / a zu werden.
Was den Bonus angeht, meinst du das, wenn du Dateien in / dir / a umbenennst und dann nach / dir / b synchronisierst? Ich glaube nicht, dass es eine Möglichkeit gibt, zu verhindern, dass rsync die Dateien in diesem Fall einfach erneut kopiert.
quelle