Ich möchte zwei Verzeichnisse vergleichen, eines ist lokal und das andere befindet sich auf einem anderen Computer.
Wie kann ich das machen? Kann ich das mit machen diff
?
Ich möchte zwei Verzeichnisse vergleichen, eines ist lokal und das andere befindet sich auf einem anderen Computer.
Wie kann ich das machen? Kann ich das mit machen diff
?
Antworten:
Ich kann mir hier zwei Möglichkeiten vorstellen ..
Stellen Sie Ihr Remote-Verzeichnis lokal bereit und verwenden Sie diff wie auf einem lokalen Computer.
Verwendung rsync
:
rsync -avz --dry-run remote-user@remote-machine:remote-dir local-dir
Dies zeigt Ihnen die Dateien, die sich unterscheiden, aber nicht die tatsächlichen diff
. Ich denke, Unison unterstützt auch diff, aber ich habe es nie benutzt und es scheint nicht mehr in der Entwicklung zu sein.
rsync
Mit den oben genannten Optionen -avz
werden keine Dateien auf dem zweiten Computer ( local-dir
) ausgegeben , die sich nicht im lokalen Verzeichnis befinden. Dies ist wahrscheinlich das, was @ EngAl-Rawabdeh mit "einer Richtung" bedeutet. Sie können die --delete
Option verwenden, um Dateien anzuzeigen, die nur in vorhanden sind local-dir
.
Wenn Sie nur feststellen möchten, ob sie identisch sind oder nicht, so etwas
cd <directory>
find . -type f | sort | xargs sha1sum | sha1sum
... sollte Ihnen eine einzige Prüfsumme über den gesamten Inhalt geben (ausgenommen leere Unterverzeichnisse). Sie können dies also auf beiden Computern ausführen und die Ausgaben vergleichen.
Beachten Sie, dass für die Verwendung diff
der gesamte Inhalt des Remoteverzeichnisses über das Netzwerk übertragen werden muss. Dies kann zu einer unzulässigen Verlangsamung führen, wenn große Dateien oder eine große Anzahl von Dateien vorhanden sind.
Meine Empfehlung wäre, zuerst zu bestimmen, welche Dateien sich zwischen den beiden Maschinen unterscheiden (indem rsync -n --delete
(verwendet -n
wird, sagt es Ihnen nur, was es tun würde, aber ohne es tatsächlich zu tun; --delete
sagt Ihnen, ob irgendwelche Dateien im Ziel existieren, aber nicht im Quelle, weil es sie löschen möchte) oder durch Vergleichen von md5sum
s. Wenn Sie suchen, wie sie unterschiedlich sind (anstatt nur, wenn sie unterschiedlich sind), würde ich dann diff
nur für diese spezifischen Dateien verwenden, um zu sehen, was die Unterschiede sind.
Ich habe ein Tool namens "UNISON" gefunden. Es ist ein sehr gutes Werkzeug und hat viele Optionen.
diff
mit unison tun kann , aber das Problem auf unison ist, kann nichtdiff
ohne Sync-Ordner tun