Come funzionano i checksum di Time Machine?

7

La pagina man per tmutil menziona che Time Machine registra i checksum dei file ed elenca un comando verifychecksums . La pagina man è scarna sui dettagli e non menziona altrimenti i checksum. Mi chiedevo se Time Machine verificasse automaticamente questi checksum (o se questi vengono verificati solo quando esegui verifychecksums manualmente)? La pagina dice anche che i checksum non vengono calcolati retroattivamente, quindi come posso elencare i file nel mio ultimo backup per il quale non è disponibile alcun checksum? Inoltre, è noto quale algoritmo di checksum viene utilizzato?

 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.

Quanto sopra è dalla pagina man di tmutil in OS X 10.11.6, forse quella in macOS Sierra ha maggiori dettagli.

    
posta Rinzwind 01.10.2016 - 10:10
fonte

1 risposta

0

Ho una risposta parziale alla mia domanda: mentre non so se Time Machine verificherà automaticamente i checksum, a post su ycombinator.com mi ha fornito una risposta alle mie altre due domande. L'algoritmo di checksum è lo stesso di quello predefinito utilizzato dall'utilità Terminal cksum . I valori di checksum vengono memorizzati nel backup di Time Machine come attributo esteso di ciascun file ( com.apple.finder.copy.source.checksum#N ). Quindi per elencare i file per i quali non è disponibile alcun checksum, dovresti cercare tutti i file nell'ultimo backup senza l'attributo, usando un comando Terminale come questo:

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

Citerò il post originale per i dettagli sul controllo del checksum memorizzato rispetto all'output di cksum :

RJIb8RBYxzAMX9u on Apr 18, 2017
[...] In any case, the "hash" appears to be CRC32, stored in extended attributes:

$ 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
    
risposta data 19.11.2018 - 21:12
fonte

Leggi altre domande sui tag