Vergleichen von Ordnern auf zwei nicht verbundenen Computern

1903
Abdull

Ich möchte Ordner auf zwei verschiedenen Computern vergleichen.

Ich verwende BitTorrent Sync, um derzeit 260 GB Daten zwischen zwei Computern zu synchronisieren: einem Windows 7-Desktop-PC und einem Windows 8.1-Laptop. Alle diese Daten befinden sich in einer Verzeichnishierarchie mit einem Stammordner namens "stuff".

Mir ist aufgefallen, dass zwischen dem, was der Desktop-PC meldet, und dem, was der Laptop meldet, ein erheblicher Unterschied besteht.

Jetzt möchte ich ein Tool verwenden, um das "stuff" -Verzeichnis des Desktop-PCs mit dem "stuff" -Verzeichnis des Laptops zu vergleichen, um fehlende und geänderte Dateien und Ordner zu ermitteln. Die Computer können nicht über ein Netzwerk auf das Dateisystem des jeweils anderen Benutzers zugreifen, aber das Übertragen der Ergebnisse eines Computers über einen USB-Stick auf den anderen Computer ist in Ordnung.

4

2 Antworten auf die Frage

2
harrymc

Selbst wenn Sie die Dateien nicht vergleichen können, besteht eine Lösung darin, die Hashwerte zu vergleichen.

Ein Werkzeug ist das kostenlose und Open-Source- Programm md5deep :

md5deep ist ein Satz von Programmen zum Berechnen von MD5-, SHA-1-, SHA-256-, Tiger- oder Whirlpool-Message-Digests für eine beliebige Anzahl von Dateien

md5deep kann einen gesamten Verzeichnisbaum rekursiv untersuchen. Berechnen Sie also das MD5 für jede Datei in einem Verzeichnis und für jede Datei in jedem Unterverzeichnis.

md5deep kann eine Liste bekannter Hashes akzeptieren und mit einer Reihe von Eingabedateien vergleichen. Das Programm kann entweder die Eingabedateien anzeigen, die der Liste der bekannten Hashes entsprechen, oder die, die nicht übereinstimmen.

Es gibt viele andere ähnliche Programme. Ein schneller Google gefunden:

HashMyFiles
Gizmo Hasher-
Prüfsumme

Oder sehen Sie sich die lange Liste im Wikipedia-Artikel an. Vergleich der Dateiüberprüfungssoftware .

* md5deep * klingt vielversprechend. Vielen Dank. Abdull vor 9 Jahren 0
2
Abdull

@ harrymc's Hinweis zur Verwendung von md5deep / hashdeep funktioniert gut für mich. Im Folgenden können Sie mit hashdeep64 eine Verzeichnishierarchie zwischen zwei Computern vergleichen:

# computer A == computer on which a hashlist.txt for all files in someFileHierarchysTopDirectoryOnComputerA is generated # computer B == computer on which computer A's generated hashlist.txt is used to compare files. Computer B generates a hashcompareresult.txt  # On computer A, create a hashlist.txt for some file hierarchy located in directory someFileHierarchysTopDirectoryOnComputerA. hashlist.txt will be placed in someFileHierarchysTopDirectoryOnComputerA's parent directory. cd someFileHierarchysTopDirectoryOnComputerA hashdeep64 -c md5 -r -l -e -vvv * | tee ../hashlist.txt # this probably will take some time to finish.  # Now copy the generated hashlist.txt onto computer B's "someFileHierarchysTopDirectoryOnComputerB/.." directory. Then on computer B, cd someFileHierarchysTopDirectoryOnComputerB hashdeep64 -c md5 -r -l -k ../hashlist.txt -a -e -vvv * | tee ../hashcompareresult.txt # hashdeep's -w, -W, -x, and -X modes don't seem to report errors on missing and additional files. Therefore using -a mode. # Above command will have generated a file hashcompareresult.txt in someFileHierarchysTopDirectoryOnComputerB's parent directory.  # Now filter the created hashcompareresult.txt for mismatches: cat ../hashcompareresult.txt | grep -E ": No match|: Known file not used" # The resulting output shows files that # * exist only on computer A, or # * exist only on computer B, or # * exist on both computers at the same location but have different MD5 hashes. # Depending on the use case, above command probably will report some false positive files and directories, e.g. desktop.ini, Thumbs.db, .DS_Store, __MACOSX, .sync, and .SyncArchive . # It may be adequate to filter out these file system entries, e.g. with # cat ../hashcompareresult.txt | grep -E ": No match|: Known file not used" | grep -v -E "desktop.ini|Thumbs.db|.DS_Store|__MACOSX|.sync|.SyncArchive"