Wie kann ich zwei Verzeichnisse vergleichen, von denen eines ein Remote-Verzeichnis ist?

7

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?

Eng Al-Rawabdeh
quelle

Antworten:

4

Ich kann mir hier zwei Möglichkeiten vorstellen ..

  1. Stellen Sie Ihr Remote-Verzeichnis lokal bereit und verwenden Sie diff wie auf einem lokalen Computer.

  2. 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.

Hari Menon
quelle
1
Das Problem bei Rsync ist, dass es nur in eine Richtung funktioniert. Ich benutze unison vor, ich suche, wie ich diffmit unison tun kann , aber das Problem auf unison ist, kann nicht diffohne Sync-Ordner tun
Wenn Sie die Reihenfolge der Verzeichnisse in rsync vertauschen, funktioniert dies auf die andere Weise.
Hari Menon
3
Ich verstehe den Kommentar nicht, der nur in eine Richtung wirkt. Identisch zu sein ist kommutativ - wenn A identisch mit B ist, dann ist B identisch mit A; Wenn sich A von B unterscheidet, unterscheidet sich B von A. Wenn Sie nur danach suchen, ob sie gleich sind oder nicht, gibt es keine Richtwirkung.
Dave Sherohman
Dave, ich meine es ist der Vergleich basierend auf einem Dateibeispiel (Vergleich zwischen A und B erforderlich, wenn rsync "A" als Referenz verwendet und B als Referenz mit "A" vergleicht, obwohl A älter als B ist
Eng Al-Rawabdeh
rsyncMit den oben genannten Optionen -avzwerden 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 --deleteOption verwenden, um Dateien anzuzeigen, die nur in vorhanden sind local-dir.
JellicleCat
3

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.

Olaf Klischat
quelle
1

Beachten Sie, dass für die Verwendung diffder 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 -nwird, sagt es Ihnen nur, was es tun würde, aber ohne es tatsächlich zu tun; --deletesagt Ihnen, ob irgendwelche Dateien im Ziel existieren, aber nicht im Quelle, weil es sie löschen möchte) oder durch Vergleichen von md5sums. Wenn Sie suchen, wie sie unterschiedlich sind (anstatt nur, wenn sie unterschiedlich sind), würde ich dann diffnur für diese spezifischen Dateien verwenden, um zu sehen, was die Unterschiede sind.

Dave Sherohman
quelle
0

Ja, Sie können es mit diff tun! Benutzerbereichsanwendungen wie "diff" wissen nicht (und müssen auch nicht wissen), ob ein Verzeichnis lokal oder remote ist.

jman
quelle
Meinst du, ich kann ssh benutzen?
0

Ich habe ein Tool namens "UNISON" gefunden. Es ist ein sehr gutes Werkzeug und hat viele Optionen.

Eng Al-Rawabdeh
quelle