Sie haben drei Ordner:
- Ordner aktuell , der Ihre aktuellen Dateien enthält
- Ordner alt , der eine ältere Version derselben Dateien enthält
- Ordner Unterschied , der nur ein leerer Ordner ist
Wie kann man vergleichen alt mit aktuellen und kopieren Sie die Dateien , die unterschiedlich sind (oder ganz neu) in Strom zu Unterschied ?
Ich habe überall gesucht und es scheint eine einfache Sache zu sein, aber ich kann es in meinem Beispiel nicht zum Laufen bringen. Die meisten Quellen schlugen die Verwendung von rsync vor, so dass ich den folgenden Befehl erhielt:
rsync -ac --compare-dest=../old/ new/ difference/
Das bedeutet jedoch, dass alle Dateien von neu nach unterschiedlich kopiert werden , auch diejenigen, die mit denen in alt identisch sind .
Falls es hilft (vielleicht ist der Befehl in Ordnung und der Fehler liegt woanders), so habe ich das getestet:
- Ich habe die drei Ordner gemacht.
- Ich habe mehrere Textdateien mit unterschiedlichen Inhalten in alten .
- Ich habe die Dateien von alt nach neu kopiert .
- Ich habe den Inhalt einiger Dateien in new geändert und ein paar zusätzliche Dateien hinzugefügt.
- Ich habe den obigen Befehl ausgeführt und die Ergebnisse auf Unterschiede überprüft .
Ich habe in den letzten Tagen nach einer Lösung gesucht und würde mich sehr über Hilfe freuen. Es muss nicht unbedingt rsync sein, aber ich würde gerne wissen, was ich falsch mache, wenn möglich.
Antworten:
Ich bin nicht sicher, ob Sie es mit vorhandenen Linux-Befehlen wie rsync oder diff tun können. Aber in meinem Fall musste ich mein eigenes Skript mit Python schreiben, da Python das Modul "filecmp" für den Dateivergleich hat. Ich habe das gesamte Skript und die Verwendung auf meiner persönlichen Website veröffentlicht - http://linuxfreelancer.com/
Die Verwendung ist einfach - geben Sie den absoluten Pfad des neuen Verzeichnisses, des alten Verzeichnisses und des Differenzverzeichnisses in dieser Reihenfolge an.
quelle
Ich habe herausgefunden, was das Problem in meinem Fall war:
Die Dateien, die ich verglichen habe, hatten unterschiedliche Zeitstempel. Ich hätte das Argument -a nicht verwenden sollen , da rsync versucht hat, die Zeitstempel beim Kopieren von Dateien beizubehalten. Der Befehl, der für mich arbeitete, war:
quelle
rsync -a
um die Dateien anfangs "zu kopieren" (oder das CP-Äquivalent), dann zu löschen oder zu ändern. (Ich bleibe gerne bei rsync, weil ich weiß, dass es selbstkonsistent ist, ohne darüber nachzudenken, was es tun könnte.) Ich denke, das hätte mit dem ursprünglichen Befehl funktionieren sollen. Die Option -a enthält -t (Vergleich nach Zeitstempel), die Alternative zu -c (Vergleich nach Prüfsumme).old/
und angegeben habenew/
.Dies könnte einigen Lesern helfen: In Windows macht ein älteres, kleines Freeware-Programm - Third Dir - genau das, was hier verlangt wird. Es ist nicht mehr über den Entwickler Robert Vašíček erhältlich. Aber ich bin sicher, dass es über einige Online-Repositories zu finden ist.
Hier ist die Beschreibung des Entwicklers, die auf seiner Website verbleibt:
Drittes Verzeichnis: Ein ungewöhnlicher Verzeichnissynchronisierer - die verschiedenen Dateien werden in das dritte Verzeichnis kopiert. Es ist sehr nützlich, z. B. neue oder bearbeitete Fotos aus einem riesigen Verzeichnisbaum auf der Festplatte in einen temporären Ordner zu extrahieren und sie dann zur Archiv-CD hinzuzufügen (Hinweis: Die Originaldateien werden mit der CD verglichen). Version 1.4, Größe 23kB. Erstellt am 2005-02-12.
Verlauf: Version 1.14 - Effizienter, wenn mehrere Zehntausend Dateien verglichen werden.
quelle
Die von Thane mit Yamaneko-Zusätzen angegebene rsync-Methode funktioniert hervorragend, lässt jedoch leere Verzeichnisse. Für mich bestand die endgültige Lösung aus zwei Schritten: Rufen Sie zuerst rsync mit vollem Pfad auf und dann den Befehl find, um alle leeren Verzeichnisse zu entfernen:
Bitte beachten Sie, dass rsync selbst mit der Option --links keine symbolischen Links gespeichert hat, sondern stattdessen die Zieldaten kopiert hat.
quelle
-empty -exec rmdir {} \;
können-empty -delete
.Ich benutze den Dualpane XY Explorer (kommerziell), der viele Tricks ausführen kann, und dies ist einer davon. Öffnen Sie
Current
in einem Bereich und Alt in dem anderen. Aktivieren Sie den aktuellen Bereich. Gehen Sie zu Fenster > Synchronisierungsauswahl . Es gibt Ihnen 5 Optionen zur Auswahl:Jetzt können Sie die resultierende Auswahl
Current
an die gewünschte Stelle kopieren . Ich habe es verwendet, ummailfolders
alte Installationen mit den neuesten zu vergleichen . Die Ordnerstruktur war recht komplex, aber (fast) allembs-files
hatten eine eindeutige Nummer.Also habe ich
mbs-files
im alten Stammverzeichnismailfolder
(in einem Bereich) und im neuesten (im anderen Bereich) gesucht und die Suchergebnisse in jedem Bereich verglichen (" Eindeutige Synchronisierung auswählen") , um Mails zu finden, die während des Suchvorgangs fehlten neu installiert)! Sie können auch viele Optionen einstellen.quelle