Wie funktionieren die Prüfsummen von Time Machine?

9

In der Manpage wird tmutilerwähnt, dass Time Machine Prüfsummen von Dateien aufzeichnet und einen verifychecksumsBefehl auflistet . Die Manpage enthält nur wenige Details und erwähnt ansonsten keine Prüfsummen. Ich habe mich gefragt, ob Time Machine diese Prüfsummen jemals automatisch überprüft (oder ob diese nur überprüft werden, wenn Sie sie verifychecksumsmanuell ausführen ). Auf der Seite wird außerdem angegeben, dass Prüfsummen nicht rückwirkend berechnet werden. Wie kann ich also die Dateien in meiner letzten Sicherung auflisten, für die keine Prüfsumme verfügbar ist? Ist auch bekannt, welcher Prüfsummierungsalgorithmus verwendet wird?

 verifychecksums path ...
         Compute a checksum of data contained within a backup and verify
         the result(s) against checksum information computed at the time
         of backup.

         No output is generated for matching checksums. Issues are
         reported using the following legend:

             !    The file's current checksum does not match the expected
                  recorded checksum.
             ?    The file's recorded checksum is invalid.

         Beginning in OS X 10.11, Time Machine records checksums of files
         copied into snapshots. Checksums are not retroactively computed
         for files that were copied by earlier releases of OS X.

Das Obige stammt aus der tmutilManpage in OS X 10.11.6, vielleicht hat die in macOS Sierra mehr Details.

Rinzwind
quelle

Antworten:

2

Ich habe eine teilweise Antwort auf meine eigene Frage: Obwohl ich nicht weiß, ob Time Machine die Prüfsummen jemals automatisch überprüft, gab mir ein Beitrag auf ycombinator.com eine Antwort auf meine beiden anderen Fragen. Der Prüfsummenalgorithmus ist derselbe wie der vom Terminal-Dienstprogramm verwendete Standardalgorithmus cksum. Die Prüfsummenwerte werden in der Time Machine-Sicherung als erweitertes Attribut jeder Datei ( com.apple.finder.copy.source.checksum#N) gespeichert . Um die Dateien aufzulisten, für die keine Prüfsumme verfügbar ist, suchen Sie mit einem Terminal-Befehl wie dem folgenden nach allen Dateien in der neuesten Sicherung ohne das Attribut:

find '/Volumes/Time Machine HD/Backups.backupdb/Mac/Latest' -type f -not -exec xattr -x -p 'com.apple.finder.copy.source.checksum#N' '{}' ';' -print 2>/dev/null | grep /

Ich zitiere den ursprünglichen Beitrag für Details zum Überprüfen der gespeicherten Prüfsumme mit der Ausgabe von cksum:

RJIb8RBYxzAMX9u am 18. April 2017
[...] In jedem Fall scheint der "Hash" CRC32 zu sein, der in erweiterten Attributen gespeichert ist:

$ xattr .inputrc
com.apple.finder.copy.source.checksum#N
com.apple.metadata:_kTimeMachineNewestSnapshot
com.apple.metadata:_kTimeMachineOldestSnapshot
$ xattr -px 'com.apple.finder.copy.source.checksum#N' .inputrc
26 E5 4A AB
$ cksum .inputrc
2873812262 65 .inputrc
$ printf '%x\n' "$(cksum .inputrc | cut -d ' ' -f 1)"
ab4ae526
Rinzwind
quelle
Das sind sehr nützliche Informationen, aber ich musste sie -printvorher hinzufügen 2>/dev/null, damit Ihr Befehl funktioniert:find '/Volumes/Time Machine HD/Backups.backupdb/Mac/Latest' -type f -not -exec xattr -x -p 'com.apple.finder.copy.source.checksum#N' '{}' ';' -print 2>/dev/null | grep /
michau
Vielen Dank! Der Befehl fehlte tatsächlich -print, ich habe ihn behoben.
Rinzwind