Frage Der beste Weg, um eine vollständige Verzeichnisstruktur zu vergleichen (diff)?


Was ist der beste Weg, Verzeichnisstrukturen zu vergleichen?

Ich habe ein Backup-Dienstprogramm, das verwendet rsync. Ich möchte die genauen Unterschiede (in Bezug auf Dateigrößen und Datum der letzten Änderung) zwischen der Quelle und der Sicherung angeben.

So etwas wie:

Local file                   Remote file                         Compare
/home/udi/1.txt (date)(size)   /home/udi/1.txt (date)(size)     EQUAL
/home/udi/2.txt (date)(size)   /home/udi/2.txt (date)(size)     DIFFERENT

Natürlich kann das Tool fertig oder eine Idee für ein Python-Skript sein.

Danke vielmals!

Udi


29
2017-07-12 10:55


Ursprung


Prüfe Tim Longs Antwort und Unvergleichlich. - Stein Åsmul


Antworten:


Das Werkzeug, nach dem Sie suchen, ist rdiff. Es funktioniert wie rsync und diff kombinieren. Es erstellt eine Patch-Datei, die Sie vergleichen oder verteilen können.


18
2017-07-12 11:22





Versuchen Sie es mit Vergleichen 3 (Roller-Software) welche Versionen für Windows und Linux hat. Sobald Sie es verwendet haben, werden Sie wahrscheinlich kein anderes Dateivergleichswerkzeug mehr verwenden wollen.


9
2017-07-12 11:48



+1 für ein außergewöhnliches Tool - Steven Sudit
+1 für eine gute Empfehlung. - djangofan
Winmerge funktioniert genauso gut. - djangofan
Dies ist das Werkzeug von Jungs geschrieben, die ihr eigenes Hundefutter essen. Es ist glatt, schmackhaft, Feature komplett für den Zweck und wird immer besser - nicht schlechter - im Gegensatz zu vielen Tools, die zu Bloatware. Wikipedia-Seite und Vergleich mit anderen, ähnlichen Apps und schließlich die Beyond vergleichen Webseite. Keine Zugehörigkeiten offensichtlich. - Stein Åsmul


Manche Leute wollen Dateisysteme aus verschiedenen Gründen vergleichen, also schreibe ich hier, was ich wollte und wie ich es gemacht habe.

Ich wollte:

  • Um das zu vergleichen gleiches Dateisystem mit sich selbst, d.h. Schnappschuss, Änderungen vornehmen, Schnappschuss, vergleichen Sie.
  • Eine Liste, welche Dateien hinzugefügt oder entfernt wurden, kümmerte sich nicht um innere Dateiänderungen.

Was ich getan habe:

Erster Schnappschuss (before.sh Skript):

find / -xdev | sort > fs-before.txt

Zweiter Schnappschuss (after.sh Skript):

find / -xdev | sort > fs-after.txt

Um sie zu vergleichen (diff.sh Skript):

diff -daU 0 fs-before.txt fs-after.txt | grep -vE '^(@@|\+\+\+|---)'

Der gute Teil ist, dass dies ziemlich viele Standard-System-Binärdateien verwendet. Vergleiche basierend auf dem Inhalt könnten passgenau durchgeführt werden find ein -exec Parameter, der den Dateipfad und ein MD5 danach wieder hallte.


9
2018-06-19 00:11





wenn Sie kein anderes Werkzeug installieren möchten ...

for host in host1 host2
do
  ssh $host ' 
  cd /dir &&
  find . |
  while
    read line
  do
    ls -l "$line"
  done ' | sort  > /tmp/temp.$host.$$
done
diff /tmp/temp.*.$$ | less
echo "don't forget to clean up the temp files!"

Und ja, es könnte mit find und exec oder find und xargs genauso einfach gemacht werden wie in einer for-Schleife. Und auch, Sie können die Ausgabe von diff hübsch machen, so sagt es Dinge wie "diese Datei ist auf Host1, aber nicht Host2" oder einige, aber an diesem Punkt können Sie auch nur die Tools installieren, über die jeder andere spricht ...


8
2017-07-12 13:17





Ich habe gebraucht dirdiff in der Vergangenheit zum Vergleich von Verzeichnisstrukturen. Es funktioniert nur auf lokale Verzeichnisse, also müssen Sie sshfs-Motieren Sie Ihre anderen Verzeichnisse.

Die gute Sache ist, dass Sie visuell sehen können, ob die Dateien gleich oder nicht und welche neueren oder älteren Dateien sind. Und es unterstützt bis zu 5 Verzeichnisse. Sie können auch Unterschiede sehen und Dateien von einem zum anderen kopieren.


5
2017-07-12 12:00





Von der rsync man-Seite:

-n, --dry-run
This  makes rsync perform a trial run that doesn’t make any changes (and produces mostly
the same output as a real run).  It is most commonly used in combination  with  the  -v,
--verbose  and/or -i, --itemize-changes options to see what an rsync command is going to
do before one actually runs it.

Möge das helfen.


4
2017-07-12 11:04



Danke, aber es löst mein Problem nicht (ich suche nach dem Unterschied, um die Unterschiede zu erzählen). - Adam Matan


Ich würde Meld dafür benutzen.


3
2017-07-12 13:18



Meld funktioniert hier sehr gut, wenn Sie eine GUI-Lösung wünschen. - Drew Noakes