Wie lassen sich riesige Verzeichnisbäume am besten vergleichen?

10082
jdehaan

Wie kann ich Verzeichnisbäume großer Größe vergleichen?

Ich denke, ein kostenloses Tool, um eine Momentaufnahme der Dateisystemstruktur (Auflistung von Dateien und Verzeichnissen, deren Größe und Zeitstempel) zu erstellen, wäre ideal, damit ich die Momentaufnahme mit einer anderen vergleichen kann, die später erstellt wird.

Treecomp wäre dafür toll, aber mit einem riesigen Baum (ich meine, wirklich riesig!) Stürzt es ab, weil es versucht, es im Speicher zu halten (4 GB Speicher sind nicht genug) ...

Ich habe das Problem gelöst, indem ich die Schnappschüsse in Stücke geteilt und diese Teile verglichen habe. Aber das ist langweilig und das Problem kann mit Sicherheit besser gelöst werden.

Gibt es ein anderes kostenloses (am besten auch Open Source) Tool, das ich ausprobieren kann? Oder gibt es eine andere Möglichkeit, dies zu übersehen?

Betriebssystem kann Linux oder Windows sein.

5
Hat jemand ein gutes Kommandozeilenäquivalent für Linux? Ich habe selbst mit find und sha1sum gewürfelt, aber ich denke, das erfordert ein erstklassiges Programm. Peter Lyons vor 14 Jahren 0
Was ich in der Vergangenheit getan habe, ist das Erstellen eines Verzeichnis-Dumps in eine Datei und Vergleichen der Dateien mit einem Ad-hoc-Programm. Daniel R Hicks vor 12 Jahren 0
Mehr als 3 vergleichen? Wie viele Dateien und Ordner sprechen wir? Wie groß ist eine Fahrt? Richie086 vor 12 Jahren 0

11 Antworten auf die Frage

5
monkey_p

Sie können einfach im Terminal verwenden

du -a 

Dadurch werden alle Dateien in allen Unterordnern einschließlich der dortigen Größen zurückgegeben. Vergleichen Sie dann die Dateien

Um die Daten in einer Textdatei zu speichern

du -a > dump.txt 

Dann können Sie einfach etwas wie diff verwenden, um die Dateien zu vergleichen

Dies ist für Linux: D

Verwenden Sie dies nur, um Kopien riesiger Render-Verzeichnisse mit vielen Unterverzeichnissen auf meinem Mac zu vergleichen. FileMerge war komplett erstickt, bis ich die Du-a-Dumps der Verzeichnisbäume fütterte. Führen Sie einfach die Ausgabe über sed aus, um die Namen der beiden Root-Verzeichnisse in dieselbe Zeichenfolge zu ändern. rebusB vor 7 Jahren 0
2
T. Kaltnekar

Ich werde versuchen, mit Total Commander etwas näher zu erläutern (ich hoffe, ich habe verstanden, was Sie wollen).

  • Installieren Sie das DiskDir- Packer-Plugin (ich habe einen direkten Link zum Plugin. Wenn Sie möchten, können Sie zur Plugins- Seite gehen und nach DiskDir-Plugin suchen.)
  • Nachdem das Plugin installiert wurde, "packen" Sie das Verzeichnis, dessen Änderungen Sie mit Alt + F5 verfolgen möchten, und wählen Sie "lst" aus der Dropdown-Liste im Packer-Teil des Dialogfelds. Dadurch wird ein "Paket" erstellt, das Sie durch Drücken der Eingabetaste eingeben können, ähnlich wie Sie ein Verzeichnis eingeben würden, und es wird der gesamte Inhalt des Verzeichnisses angezeigt
  • Wenn Sie die Ergebnisse vergleichen, wechseln Sie zum ursprünglichen Verzeichnis im linken Bereich und geben Sie den gewünschten Schnappschuss im rechten Bereich ein
  • Verwenden Sie die Funktion "Synchronize Dirs" im Menü "Befehle"
  • Deaktivieren Sie im Fenster "Verzeichnisse synchronisieren" die Option "Vergleich nach Inhalt", aktivieren Sie "Unterverzeichnisse" und "Datum ignorieren" (oder nicht, wenn das geänderte Datum wichtig ist) und führen Sie den Vergleich aus
  • Das Fenster zeigt Ihnen Dateien an, die gleich sind (in diesem Fall nicht nach Inhalt, nur nach Größe), unterschiedliche Dateien und fehlende Dateien auf der linken / rechten Seite

Da es sich bei dem Schnappschuss um eine reine Textdatei handelt und Sie nicht nach Inhalten vergleichen, sollte sie schnell sein, aber ich habe sie nie für ein wirklich großes Verzeichnis verwendet.

Dies ist nützlich, wenn Sie keine Sicherungskopien erstellen, sondern nur eine Momentaufnahme des Inhalts des Verzeichnisses machen möchten. Wenn Sie Backups erstellen, können Sie dasselbe Tool (Synchronize-Verzeichnisse) verwenden, um auch den Inhalt zu vergleichen.

Es gibt auch eine erweiterte Version des DiskDir-Plugins. Der Download-Link befindet sich im ersten Beitrag. Mit dieser Version können Sie Pakete (wie zip, 7z ...) als Verzeichnisse im Snapshot anzeigen lassen. Dies würde natürlich die Zeit für eine Momentaufnahme erhöhen.

+1 für TC (obwohl nicht kostenlos :) vor 15 Jahren 0
2
Chris Nava

Ich habe MD5-Hashes und -Differenzen verwendet, um Bäume in der Vergangenheit zu vergleichen. Es ist langsam, findet jedoch geänderte Dateien in Fällen, in denen die Daten nicht zuverlässig sind. Es ist auch portabel, sodass Sie den Index übertragen können, anstatt Dateien über das Netzwerk zu vergleichen.

find /path/to/check -type f | xargs md5sum > after.txt  diff before.txt after.txt > diffs.txt 
Gute Antwort, aber ich würde das MD5 auf einem Dateisystem der hier diskutierten Größe vermeiden. DaveParillo vor 15 Jahren 1
Für jemanden, der versucht, etwas Ähnliches auf einem Windows-Computer (2008 / Vista und höher) auszuführen, können Sie den folgenden Befehl verwenden: forfiles / PC: \ Ihr \ Pfad \ Here / s / C "cmd / c rhash --simple @file" > C: \ OutputOfHashes.txt forfiles ist ab 2008 / Vista ein integrierter Befehl. http://technet.microsoft.com/de-de/library/cc753551%28v=ws.10%29.aspx Ersetzen Sie einfach den Befehl rhash (Open Source Hash Generierungsprogramm) durch einen Hash Ihrer Wahl. http://rhash.anz.ru/ aolszowka vor 11 Jahren 1
Vielleicht wäre ein Tool, das die Hashes zwischenspeichern kann, eine Lösung. So etwas wie GIT wird nur die Hashwerte geänderter Dateien neu berechnen. Ich frage mich, ob Sie den Hash-Speicher als Vergleichsquelle verwenden könnten ... (Git verwendet SHA1 vs MD5, so dass die anfängliche Berechnung höher wäre, der Unterhalt jedoch aufgrund der Caching-Funktionen niedriger ist.) Chris Nava vor 11 Jahren 1
1
ssollinger

Sie können einfach die Eingabeaufforderung verwenden, um die Auflistung zu sichern:

DIR /S >Listing1.txt 

(Sie können die Optionen feineinstellen, wenn Sie möchten, aber diese grundlegende Syntax ist wahrscheinlich gut genug)

Zum Vergleich der beiden Auflistungen verwenden Sie ein beliebiges Dateivergleichstool wie WinDiff oder CompareIt usw. WikiPedia enthält eine Liste solcher Tools hier: http://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools

Großer Trick, wenn Sie mir sagen, wie man die resultierenden 2x 10GB-Dateien in einem Dateivergleichstool vergleicht! Ein Tool, das Informationen in einer Datenbank speichert, könnte mir dabei helfen, aber das tut mir nicht leid. jdehaan vor 15 Jahren 0
Sorry, es klingt vielleicht ein bisschen unhöflich, nachdem ich mich selbst gelesen habe. Es war nicht so gemeint. Dies kann möglicherweise anderen Benutzern mit einer geringeren Datenmenge helfen, ohne zusätzliche Software auf dem System zu installieren. jdehaan vor 15 Jahren 0
Kein Problem. Ich wusste nicht, dass Ihre Angebote so groß sind, und Sie haben Recht, dass mein Vorschlag in diesem Fall nicht geeignet ist. Ich dachte, es würde diese Methode erwähnen, da die Leute manchmal zu sehr versucht sind, das beste Werkzeug zu finden und die einfachen Wege vergessen, Dinge zu tun. Aber wie Sie sagten, ist dies in Ihrem Fall keine Lösung und Sie benötigen ein anderes Werkzeug. ssollinger vor 15 Jahren 0
1
Perleone

Machen Sie vor einer Woche den ersten Schnappschuss:

rsync --archive /the/source/ /var/snapshot1/ 

Machen Sie jetzt den zweiten Schnappschuss:

rsync --archive /the/source/ /var/snapshot2/ 

Und vergleiche sie:

rsync --archive --list-only /var/snapshot1/ /var/snapshot2/ 
Ich mag diese Antwort, weil: 1. rsync den Dateinamen, die Größe und den Zeitstempel vergleicht (so wie es das OP wünscht) und 2. es funktioniert sowohl unter Windows als auch unter Linux (und sogar unter Windows-Laufwerken, die unter Linux cifs-mounted sind). agtoever vor 10 Jahren 0
0

Ich habe dies in Total Commander mit der Synchronize-Verzeichnis-Funktion durchgeführt. 1,2 TB Daten über zwei Laufwerke.

Klingt gut, aber wie vergleiche ich den Status der Daten mit dem, der vor einem Monat dort war. Ich brauche keine Backup-Lösung, ich möchte nur Änderungen von einem Checkpoint zum anderen identifizieren. Ich bin nicht an den Änderungen in Dateien interessiert, sondern nur an der Struktur, hinzugefügten / gelöschten / veränderten Dateien, erstellten / gelöschten / geänderten Verzeichnissen. Der Inhalt ist mir egal. jdehaan vor 15 Jahren 0
Die Total Commander-Synchronisierungsfunktion zeigt Ihnen eine Liste von Dateien, die auf beiden Seiten neu sind oder geändert wurden, ohne dass die Synchronisierung tatsächlich ausgeführt werden muss. vor 15 Jahren 0
Das ist in Ordnung, aber ich habe nur einmal die Daten (heute). Für die andere Seite (Monat zuvor) würde ich auch die Daten benötigen und ich habe nicht genug Speicherplatz für ein paar Dutzend TB ... Treecomp verfügt über diese Funktion, skaliert jedoch nicht gut mit großen Bäumen, bis 2 TB es funktionieren. . jdehaan vor 15 Jahren 0
Ich muss genau feststellen, dass die Beschränkung nicht wirklich die Datenmenge ist, sondern die Anzahl der Dateien / Verzeichnisse, da die Daten nicht in der Momentaufnahme von Treecomp enthalten sind. jdehaan vor 15 Jahren 0
0
Steef Min

Freecommander hat die Möglichkeit, zwei verschiedene Ordner zu vergleichen.

Danke aber mein Problem ist nicht so unbedeutend ... jdehaan vor 15 Jahren 0
0
harrymc

Sie können auch versuchen:

Karen Verzeichnis-Drucker

Der Verzeichnisdrucker von Karen kann den Namen aller Dateien auf einem Laufwerk zusammen mit der Dateigröße, dem Datum und der Uhrzeit der letzten Änderung sowie den Attributen (schreibgeschützt, versteckt, System und Archiv) drucken! Jetzt kann die Liste der Dateien nach Name, Größe, Erstellungsdatum, Datum der letzten Änderung oder Datum des letzten Zugriffs sortiert werden.

Dateilistengenerator

FLG ist ein kostenloser Dateilistengenerator. Es durchsucht den Verzeichnisbaum nach den Dateien mit den angeforderten Kriterien und erstellt eine Liste im HTML-Format.

Der Verzeichnis-Drucker von Karen ist wirklich ein schönes Werkzeug. Das Parsen der Ausgabedateien mit einem Perl-Skript könnte mir vielleicht beim Vergleich helfen, aber es müsste klug sein, nicht zu viel Speicher zu verwenden ... Ich kann nicht wirklich glauben, dass ich der einzige bin, der dieses Problem hat ... jdehaan vor 15 Jahren 0
Du bist bestimmt nicht der einzige. Ist das Problem eher das Synchronisieren von Verzeichnissen? Wenn ja, kann ich die sehr schnelle SyncBack-Freeware unter http://www.2brightsparks.com/assets/software/InfoHesiveViewerEP_Setup.exe empfehlen. harrymc vor 15 Jahren 0
0
Peltier

Hast du meld versucht ? Ich habe keine Ahnung, ob es für große Bäume gut ist, aber Sie können es immer versuchen :)

Meld ist ein visuelles Vergleichs- und Zusammenführungswerkzeug für Entwickler. Mit Meld können Sie Dateien, Verzeichnisse und versionsgesteuerte Projekte vergleichen. Es bietet einen zwei- und dreifachen Vergleich von Dateien und Verzeichnissen und unterstützt viele gängige Versionskontrollsysteme.

Mit Meld können Sie Codeänderungen überprüfen und Patches verstehen. Es kann sogar hilfreich sein, herauszufinden, was in der Verschmelzung passiert, die Sie immer vermeiden.

Das ist ein sehr gutes und schönes Hilfsmittel, kann jedoch keinen Verzeichnisbaumstatus (zumindest nicht in der Version, die ich habe) für spätere Verwendung und Vergleich speichern jdehaan vor 15 Jahren 0
0
atrent

Hast du schon mal Back In Time versucht ?

Es ist ein GNU / Linux-Tool, das eine Momentaufnahme eines Dateisystems erstellt, indem feste Links oder physische Kopien von Dateien und Verzeichnissen verwendet werden.

Es ist sehr konfigurierbar und verfügt über einen Daemon und GUI-Teile, die separat ausgeführt werden.