Ich schreibe ein Perl-Skript (in Windows), das File :: Find verwendet, um ein Netzwerk-Dateisystem zu indizieren. Es funktioniert großartig, aber es dauert sehr lange, das Dateisystem zu crawlen. Ich dachte, es wäre schön, irgendwie eine Checksumme eines Verzeichnisses zu bekommen, bevor man es durchquert, und die Prüfsumme stimmt mit der Prüfsumme überein, die bei einem vorherigen Lauf genommen wurde, nicht durch das Verzeichnis. Dies würde eine große Anzahl von Verarbeitungen überflüssig machen, da sich die Dateien in diesem Dateisystem nicht oft ändern.Kann ich die MD5sum eines Verzeichnisses mit Perl bekommen?
Auf meiner AIX-Box, verwende ich diesen Befehl ein:
csum -h MD5 /directory
, das so etwas wie dies zurück:
5cfe4faf4ad739219b6140054005d506 /directory
Der Befehl nur sehr wenig Zeit in Anspruch nimmt:
time csum -h MD5 /directory
5cfe4faf4ad739219b6140054005d506 /directory
real 0m0.00s
user 0m0.00s
sys 0m0.00s
Ich habe hat CPAN nach einem Modul durchsucht, das dies tut, aber es sieht so aus, als ob alle Module mir die MD5sum für jede Datei in einem di geben würden Pfarramt, nicht für das Verzeichnis selbst.
Gibt es eine Möglichkeit, die MD5sum für ein Verzeichnis in Perl oder sogar in Windows zu bekommen, da ich einen Win32-Befehl von Perl aufrufen könnte?
Vielen Dank im Voraus!
+1 ist das AIX-Tool wahrscheinlich nur Hashing die Metadaten – Dave
Die Manpage für csum ist irreführend: "Der Befehl csum berechnet einen Nachrichtenauszug für die angegebenen Dateien mit dem angegebenen Hash-Algorithmus. Dies bietet eine zuverlässige Möglichkeit zur Überprüfung der Dateiintegrität." - Das lässt mich nicht glauben, dass es Metadaten hasht. – BrianH
Obwohl es sein könnte - nicht bestreiten Ihren Anspruch, ich sage nur die Manpage nicht so klingen. – BrianH