Überprüfen Sie die Richtigkeit der kopierten Dateien


14

Kann ich nach dem Kopieren von etwa 50 GB (30.000 Dateien, einschließlich verschiedener Formate) von Dateien von einer internen Festplatte auf eine externe Festplatte feststellen, ob alles korrekt kopiert wurde? Auch wenn ich zwischendurch durch Abbrechen des Vorgangs aufhöre und später sage Zusammenführen" den Vorgang fortsetze, wird die Richtigkeit beeinträchtigt?

Ich konnte verwenden , um Anwendungen wie , back-in-timeaber ich bin sehr wählerisch in dem Kopieren von Dateien und für das nächste Mal , wenn ich verwenden will copyBetrieb und sage mergestatt replace. Ist es ratsam, wenn Sie eine große Anzahl von Dateien kopieren?


2
Möglicherweise finden Sie hier eine Antwort .
Takkat

Antworten:


16

Ich verwende hashdeep , um Sicherungen / Wiederherstellungen zu überprüfen und gelegentlich auf Dateisystembeschädigungen in einem RAID zu prüfen.

Die Geschwindigkeit hängt davon ab, welche Hash-Funktionen Sie verwenden (einige sind rechenintensiver als andere) und von der Lesegeschwindigkeit Ihrer Festplatten. Auf meinem System hashdeepkann mit md5 und 300 MB / s Lesegeschwindigkeit ca. 1 TB / Stunde verarbeitet oder überprüft werden.


Beispiel zur Berechnung und Speicherung von Prüfsummen in einer Datei:

cd my-data
hashdeep -rlc md5 . > ~/checksums.txt

Parameter:

  • r - rekursiv
  • l - Verwenden Sie relative Pfade
  • c - Hash-Funktion angeben
  • . - rekursiv ab dem aktuellen Verzeichnis
  • > - Ausgabe in die angegebene Datei umleiten

Siehe die Manpage .


Beispiel zur Überprüfung von Prüfsummen und zum Ausdrucken einer Liste von Unterschieden:

$ cd /mnt/my-backup
$ hashdeep -ravvl -k ~/checksums.txt .
hashdeep: Audit passed
          Files matched: 40914
Files partially matched: 0
            Files moved: 0
        New files found: 0
  Known files not found: 0

Parameter:

  • a - Audit (vergleiche mit der Liste der bekannten Checksummen)
  • v- ausführlich (um eine Auflistung der Nichtübereinstimmungen zu erhalten, vbedeutet Mehrfaches s ausführlicher)
  • k - Datei mit bekannten Hashes

Beachten Sie, dass ab März 2016 aufgegebenhashdeep zu werden scheint .


13

Es sieht aus wie die perfekte Aufgabe für Rsync . Rsync vergleicht und kopiert Unterschiede.

Das rsyncDienstprogramm kam mir zum ersten Mal in den Sinn, als ich Ihre Frage sah. Wenn Sie wie folgt vorgehen, wird möglicherweise schnell angezeigt, welche Dateien sich im Verzeichnis befinden a, nicht jedoch in b:

$ rsync -rcnv a/* b/

-r will recurse into the directories
-c will compare based on file checksum
-n will run it as a "dry run" and make no changes, but just print out the files 
   that would be updated
-v will print the output to stdout verbosely

Dies ist eine gute Option, da Sie auch den Inhalt der Dateien vergleichen können, um sicherzustellen, dass sie übereinstimmen. rsyncDer Delta-Algorithmus von ist für diese Art von Anwendungsfall optimiert. Wenn Sie dann bden Inhalt von abgleichen möchten a, können Sie einfach die -nOption entfernen , um die eigentliche Synchronisierung durchzuführen.

Einige verwandte Fragen:


1
rsync ist definitiv das Werkzeug für diesen Job, aber es vergleicht und kopiert keine Unterschiede per se. Es vergleicht die Dateien anhand von Größen und Hashes.
Justin Force

@JustinForce Größe verwenden? Sicher, unterschiedliche Größen stellen sicher, dass die Datei nicht exakt gleich ist, aber rsync ist sehr vielseitig. Optional kann es Metadaten (wie die Zeit) vertrauen, um ein erneutes Lesen aller Dateien zu vermeiden. Beim Kopieren über das Netzwerk wird ein fortlaufender Hash berechnet, um gemeinsame Teile genau zu erkennen und deren Übertragung zu vermeiden. Auf lokalen Laufwerken spielen Hashes diese Rolle jedoch standardmäßig nicht (sofern sie überhaupt verwendet werden). Sie können es sogar darum bitten, darauf zu vertrauen, dass ein kürzeres Ziel bereits den richtigen Inhalt enthält und nur angehängt werden muss. Bleiben wir jedoch beim Thema.
Stéphane Gourichon

8

Wurden die GUI-Apps beim Datei- und Verzeichnisvergleichstool vorgeschlagen ? Tun Sie es nicht für Sie, versuchen Sie, diff -rq /path/to/one /path/to/otherbeide Verzeichnisse leise zu durchsuchen und nur Unterschiede auf dem Bildschirm zu protokollieren.



0

Bei "Wenn alles korrekt kopiert wurde" verwende ich ein modifiziertes cp (oder mv), das eine Prüfsumme enthält (optional in xattr gespeichert, daher muss es nur einmal für die Quelle berechnet werden). Http://sourceforge.net/projects / crcsum /


1
Obwohl Ihre Antwort zu 100% richtig ist, ist es für einen Anfänger nahezu unmöglich, sie umzusetzen. Bearbeiten Sie daher Ihre Antwort und fügen Sie die Schritte zum Herunterladen, Kompilieren, Installieren und Deinstallieren crccpin Ihre Antwort ein! ;-) Sie können den Link immer am Ende Ihrer Antwort als Quelle für Ihr Material
belassen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.