Frage Wie man Unterschiede zwischen Verzeichnissen (Linux) vergleicht


Ich habe zwei Verzeichnisse - eins von früherem Backup und zweites von neuestem Backup. Wie kann ich vergleichen, welche Änderungen an Dateien im Verzeichnis von der neuesten Sicherung unter Linux vorgenommen wurden? Wie sehe ich Änderungen in zum Beispiel Text und PHP-Dateien - ich denke über etwas wie Revisionsgeschichte in Wikipedia, wo Sie alte Version auf der einen Seite des Bildschirms und neueste Version auf anderen und Änderungen sind markiert. Wie erreiche ich sowas?

bearbeiten: Wie vergleiche ich auch? Fernbedienung dir mit lokalen?


21
2017-08-26 16:17


Ursprung




Antworten:


Von Diff Man Seite:

Wenn sowohl from-file als auch to-file Verzeichnisse sind, vergleicht diff die entsprechenden Dateien in beiden Verzeichnissen.          in alphabetischer Reihenfolge; Dieser Vergleich ist nicht rekursiv, es sei denn, die Option -r oder --recursive wird angegeben.          diff vergleicht den tatsächlichen Inhalt eines Verzeichnisses niemals so, als wäre es eine Datei. Die Datei, die vollständig ist          Spezifiziert möglicherweise nicht Standardeingabe, weil die Standardeingabe namenlos ist und der Begriff "Datei mit          derselbe Name '' gilt nicht.

Um Verzeichnisse zu vergleichen: diff --brief -r dir1 dir2

So vergleichen Sie Dateien nebeneinander: diff --side-by-side file1 file2


32
2017-08-26 16:27



sehr cool, ich werde es versuchen - Phil
... ich frage mich, wie ich Remote-Verzeichnis mit lokalen vergleichen? - Phil
Sie müssten das Remote-Verzeichnis auf dem lokalen Computer bereitstellen. Sie können jedoch Dateien wie folgt remote vergleichen: ssh REMOTE_SERVER "cat / path / to / some / file" | diff - Side-by-side / Pfad zu einer Datei - Eine andere Sache, der 'sdiff' Befehl funktioniert wie 'diff - Side-by-side', wenn Sie etwas tippen möchten. - Sean Staats
Verwenden Sie NFS, um das Remote-Verzeichnis bereitzustellen. Bearbeiten Sie auf dem Remote-Server (Server-b) / etc / exports und fügen Sie Folgendes ein: / Pfad / von / Verzeichnis / zu / Freigabe server-a.ip.address (ro, no_root_squash) Starten Sie NFS auf Server-b (/etc/init.d/nfs start) Mounten Sie auf Ihrem lokalen Server (Server-a), indem Sie Folgendes zu / etc / fstab hinzufügen: server-b.ip.add: / pfad / von / directory / to / share / mnt / server-b nfs rsize = 32768, wsize = 32768, rw 0 0 Dann auf Server-a, mkdir / mnt / server-b; mount / mnt / server-b Danke für die Upvotes. - Sean Staats
Sie können verwenden sshfs um ein temporäres Ad-hoc-Netzwerkverzeichnis zu erstellen, anstatt NFS zu verwenden. - Dan Andreatta


Angenommen:

  • wir sind dabei www1im Vergleich mit der Fernbedienung www2
  • Es gibt eine öffentliche Schlüsselauthentifizierung von lokal www1 zu entfernt www2
  • Wir vergleichen als der gleiche Benutzer auf lokaler Ebene www1 und entfernt www2
find / var / www / html / -name "*" -exec md5sum -b {} \; | grep -v "/ var / www / html / ausschließen_dieses Verzeichnis"> local.md5
ssh www2 "finden / var / www / html / -name '*' -exec md5sum -b {} \; | grep -v / var / www / html / exclude_this dir> remote.md5"
scp www2: remote.md5.
diff local.md5 remote.md5

3
2018-02-03 15:56





Sie möchten wirklich die Kraft von kombinieren rsync um den Bandbreitenverbrauch mit der Energie von diff um dir Flexibilität zu geben, also um Diffs.

So etwas wie das:

cp -R $local $bak
rsync $server:$remdir/* $local/
rsync $local/ $server:$remdir/* 
diff -wur $local $bak

Ich schätze, du könntest das ein bisschen verbessern, wenn du es oft benutzt rsync anstatt cp in der ersten Zeile - offensichtlich in der letzten Zeile haben Sie die volle Kraft von diff um es zu formatieren wie du willst. Wahrscheinlich mit y im OPs-Fall

Nachteil dieses Ansatzes ist, dass du am Ende doppelt so viel Speicherplatz benötigst, aber bei weniger als $ 1 / Gig, wen interessiert das?


3
2017-09-08 21:21





Tun diff old_dir new_dir > diff.txt für nebeneinander Unterschiede auf demselben Server.

Für Remote-Dateien:

Beispiel: ABC ist vorhandener Server und XYZ ist Ihr Remote-Server und der Verzeichnisname ist 123.

Schritt 1: Benennen Sie das vorhandene Verzeichnis 123 auf dem ABC-Server als 123_ABC um.

ABC:/Home > mv 123 123_ABC

Schritt 2: Erstellen Sie ein neues Verzeichnis auf dem Server ABC:

ABC: > mkdir 123_XYZ

Schritt 3: Kopieren Sie alle Dateien aus dem Verzeichnis 123 auf dem XYZ-Server in das Verzeichnis 123_XYZ auf dem ABC-Server:

XYZ/123 > scp * userid@ABC: /123_XYZ

Dadurch werden alle Dateien aus dem Verzeichnis auf Ihrem XYZ-Server in Ihr ABC-Server / 123_XYZ-Verzeichnis kopiert.

Schritt: 4: Führen Sie den Unterschied zwischen beiden Verzeichnissen aus:

Gehen Sie nun zum ABC-Server und führen Sie einen Vergleich zwischen 123_ABC und 123_XYZ durch

ABC > diff 123_ABC 123_XYZ > diff.txt

Der obige Befehl speichert die Diff-Ergebnisse in diff.txt im selben Pfad.

Sie können die Unterschiede dann vergleichen.

Vielen Dank,

Mehul


1
2017-12-23 17:42





BERATER Advanced Intrusion Detection Environment (AIDE) ist eine Dateiintegritätsprüfung für UNIX-Betriebssysteme. Sein Zweck ist die Berichterstattung über die Integrität von Daten auf unterstützten Dateisystemen. Wenn Sie AIDE mehrmals auf dem Zielhost ausführen, können Sie bestimmen, welche Dateien sich ändern. Wenn Sie AIDE mehrmals auf verschiedenen Hosts ausführen, können Sie bestimmen, welche Dateien und Berechtigungen unterschiedlich sind. Verwenden Sie dann ein GUI-Diff-Tool für die gemeldeten "verschiedenen" Dateien.

Oder verwenden Sie ein GUI-Diff-Tool wie Meld, Guiffy, Kdiff3, Diff, Vimdiff, Gvimdiff, Emacs, Kompare, Diffus, Easydiff, TkDiff oder xxdiff. Die meisten werden zusätzlich zu Datei-Diffs Verzeichnis-Diffs machen. Sie müssen das Remote-Laufwerk mit NFS, SMBFS oder SSHFS mounten, wie von anderen erwähnt.


0
2017-08-29 07:24





Oder Sie können zwei Dateien mit dem Ausgang der Liste der Dateien verwenden. Und dann vergleiche diese beiden Dateien. Zum Beispiel:

/path/to/compare/remote$: ls > remote-files 

/path/to/compare/local$: ls > local-files 

Laden Sie eine der Dateien herunter.

-rw-r - r-- 1 1015 1015 26624 2005-06-14 13:10 FILE.TXT

zu FILE.TXT

Verwenden Sie Diff (diff -y remote-files local-files > diff-files) um sie nebeneinander zu vergleichen. Öffnen Sie die Diff-Dateien und überprüfen Sie sie. Jede Zeile mit> bedeutet eine andere Datei.


0
2018-04-07 21:11