Hallo zusammen,
ich hab hier zwei recht große Verzeichnisse (groß im Sinne von ~50.000 Dateien, nicht im Sinne von Speicherplatz) mit mehreren verschachtelten Unterverzeichnissen und einem riesen Haufen an Binär-Dateien. Diese beiden Verzeichnisse waren vor gefühlten Jahrtausenden mal identisch und sollen es jetzt wieder werden. In der Zwischenzeit sind in beiden Verzeichnissen Dateien geändert worden, verschoben worden, gelöscht worden und hinzugekommen.
Leider liegt dem ganzen keine Versionsverwaltung zugrunde. Dann wärs nämlich einfach
Ich suche also eine Lösung, wie ich die beiden Verzeichnisse sinnvoll wieder zusammen führen kann. Ganz ohne Handarbeit wird das nicht gehen. Aber zumindest ein wenig automatisierte Hilfe könnte nicht schaden.
Meine Idee wäre folgendes:
Ich bilde über beide Verzeichnisse die sha1-summe aller Dateien. und speichere sie, samt Dateipfad in einer Datei.
Anschließend bilde ich daraus Schnittmengen.
Eine Liste mit allen Dateien bei denen Hash und Dateipfad in beiden Verzeichnissen übereinstimmen.
Eine Liste mit allen Dateien die in einem der beiden Verzeichnisse doppelt vorkommen. (i.e. mehrmals der gleiche Hash im gleichen Verzeichnis)
Eine Liste mit allen Dateien bei denen der Hash aber nicht der Dateipfad in den beiden Verzeichnissen übereinstimmt.
Eine Liste mit allen Dateien bei denen der Dateipfad aber nicht der Hash in beiden Verzeichnissen übereinstimmt.
Eine Liste mit allen Dateien die nur in jeweils einem der beiden Verzeichnisse vorkommen.
... Hab bestimmt was vergessen.
Das ganze würde ich, aus Geschwindigkeitsgründen (Entwicklungs und Ausführungsgeschwindigkeit) in Python gießen.
Das Zusammenführen würd ich dann von Hand machen. Da das Binärdateien sind, lässt sich der Inhalt leider schlecht automatisiert vergleichen. ... theoretisch wäres machbar, weil fast alle das gleiche Format ... aber dann müsst ich erst nen Parser und ... naaaa!
Bevor ich da aber Entwicklungsarbeit investiere wollt ich lieber mal nachfragen, ob es da nix von Ratiopharm gibt? Ich muss das Rad ja nicht immer neu erfinden.
Ich würde Lösungen die auf Linux (GUI oder Shell soll mir egal sein) laufen bevorzugen, kann aber auch mit Windows aufwarten, wenn es dann einfacher wird.
TIA
Look