Nachdem ich von Windows auf Linux migriert bin, möchte ich eine alternative Software zu Winmerge finden oder Befehlszeilentools zum Vergleichen und Synchronisieren von zwei Ordnern unter Linux erlernen. Ich wäre Ihnen dankbar, wenn Sie mir sagen könnten, wie die folgenden Aufgaben in der Befehlszeile auszuführen sind ... (Ich habe diff und rsync studiert, benötige aber noch Hilfe.)
Wir haben zwei Ordner: "/ home / user / A" und "/ home / user / B"
Ordner A ist der Ort, an dem normale Dateien und Ordner gespeichert werden, und Ordner B ist ein Sicherungsordner, der als vollständiger Spiegel von Ordner A dient. (Nichts wird direkt vom Benutzer in Ordner B gespeichert oder geändert.)
Meine Fragen sind:
Wie liste ich Dateien auf, die nur in Ordner B existieren? (ZB diejenigen, die seit der letzten Synchronisierung aus Ordner A gelöscht wurden.)
Wie kopiere ich Dateien, die nur in Ordner B existieren, zurück in Ordner A?
Wie liste ich Dateien auf, die in beiden Ordnern vorhanden sind, aber unterschiedliche Zeitstempel oder Größen haben? (Diejenigen, die in Ordner A seit der letzten Synchronisierung geändert wurden. Ich möchte die Verwendung von Prüfsummen vermeiden, da es Zehntausende von Dateien gibt und dies den Prozess zu langsam machen würde.)
Wie erstelle ich eine exakte Kopie von Ordner A in Ordner B? Ich meine, kopiere alles von Ordner A in Ordner B, der nur in Ordner A existiert, und lösche alles von Ordner B, der nur in Ordner B existiert, ohne jedoch die Dateien zu berühren, die in beiden Ordnern gleich sind.
quelle
Antworten:
Dadurch wird Ordner A in Ordner B verschoben:
Wenn der Inhalt der Ordner A und B identisch sein soll, geben Sie
/home/user/A/
(mit dem Schrägstrich) als Quelle an. Dies nimmt nicht den Ordner A, sondern den gesamten Inhalt und legt ihn in Ordner B ab.-a
Führen Sie die Synchronisierung unter Beibehaltung aller Dateisystemattribute durch-v
wortreich laufen-u
Kopieren Sie nur Dateien mit einer neueren Änderungszeit (oder einem Größenunterschied, wenn die Zeiten gleich sind).--delete
Löschen Sie die Dateien im Zielordner, die in der Quelle nicht vorhanden sindManpage: https://download.samba.org/pub/rsync/rsync.html
quelle
/home/user/B/A
anstatt den Inhalt von A mit dem Inhalt von B zu überschreiben. Könnten Sie mir helfen, einen Blick darauf zu werfen?Sie könnten
unison
von Benjamin Pierce bei U Penn entwickeltes Werkzeug.Nehmen wir an, Sie haben zwei Verzeichnisse,
/home/user/Documents/dirA/
und/home/user/Documents/dirB/
Um diese beiden zu synchronisieren, können Sie Folgendes verwenden:
~ $
unison -ui text /home/user/Documents/dirA/ /home/user/Documents/dirB/
In der Ausgabe
unison
werden alle Verzeichnisse und Dateien angezeigt, die sich in den beiden zu synchronisierenden Verzeichnissen unterscheiden . Es wird empfohlen additiv synchronisieren (replizieren Datei in beiden Orten fehlen) auf dem Vorlauf, dann erstellen und einen Synchronisationsbaum auf Ihrem Rechner zu halten und auf dem folgenden Durchläufen wird es echte Synchronisation (dh implementieren, wenn Sie aus einer Datei löschen.../dirA
, es wird aus gelöscht werden ,.../dirB
wie gut. Sie können auch jede Änderung vergleichen und gegebenenfalls wählen vorwärts oder umgekehrt zwischen den beiden Verzeichnisse synchronisieren.Optional können Sie zum Starten der grafischen Benutzeroberfläche einfach die
-ui text
Option aus Ihrem Befehl entfernen , obwohl ich diecli
einfachere und schnellere Verwendung finde .Mehr dazu: Unison-Tutorial in der Unison-Benutzerdokumentation .
quelle
Die Antwort von TuxForLife ist ziemlich gut, aber ich empfehle dringend, sie
-c
beim lokalen Synchronisieren zu verwenden. Sie können argumentieren, dass es nicht die Zeit- / Netzwerkstrafe wert ist, dies für Remote-Synchronisierungen zu tun, aber es lohnt sich absolut für lokale Dateien, da die Geschwindigkeit so groß ist.Dies zeigt, wie Sie Probleme haben können, wenn Sie dieselben Größen- und Zeitstempel haben.
Die Einrichtung
Der Rsync, der nichts kopiert, da alle Dateien die gleiche Größe und den gleichen Zeitstempel haben
Der Rsync, der ordnungsgemäß funktioniert, da er Prüfsummen vergleicht
quelle
Dies ist das, was ich zum Sichern persönlicher Dateien verwende, bei denen mir nicht alles wichtig
-a
ist und ich möchte , dass weitere nützliche Informationen gedruckt werden.Von der rsync-Manpage :
Von
rsync --info=help
Obwohl dies weniger explizit ist, scheint es äquivalent und kürzer zu sein:
quelle
Dies ist nicht ganz das Gleiche, wonach Sie gefragt haben, aber Sie könnten die Verwendung eines Versionskontrolltools in Betracht ziehen. Tools wie Git machen alles, wonach Sie fragen, und mehr, besonders wenn Sie nicht direkt in Ordner B arbeiten, könnte es interessant sein, sie sich anzusehen. Weitere Informationen zu Git finden Sie hier
quelle
Sie können es folgendermaßen verwenden:
Auf diese Weise kopieren Sie den Inhalt von Ordner A in Ordner B und nicht den Inhalt von Ordner A selbst.
quelle