Come confermare che un file è stato copiato su un nuovo disco senza errori?

4

Vorrei copiare i file da un'unità esterna a un'unità connessa alla rete. Voglio assicurarmi che non ci siano errori.

Conosco i file di hash MD5 che vedo per file singoli di grandi dimensioni che vengono scaricati da Internet. So anche che posso usare il terminale per "diff" i due gruppi di file.

Tuttavia, sto cercando un software in grado di confermare che tutti i file nella struttura dei file siano stati copiati completamente dal finder o da un software che potrebbe fare la copia per me e confermare che tutto il i bit sono esattamente gli stessi.

I file sono correlati ai video e hanno spesso dimensioni superiori a TB (non in un file - file nidificati a più cartelle complessi)

Sto bene se c'è un comando da terminale che può fare la copia e confrontare anche per me. (anche se essere in grado di vedere la quantità di tempo rimasta su una copia è una funzione molto bella ... inoltre, voglio essere sicuro di ottenere TUTTO il file - risorse e tutte le risorse)

    
posta evilblender 28.03.2012 - 18:03
fonte

3 risposte

8

or a piece of software that would do the copying for me and confirm that all the bits are exactly the same.

Questo è ciò che fa rsync . Può copiare un file, interi alberi di file, praticamente qualsiasi cosa. E lo fa con un algoritmo affidabile. Alla fine di un rsync puoi essere sicuro che il sink ha ottenuto esattamente ciò che hai inviato dalla sorgente.

C'è una GUI per rsync chiamata arRsync che può rendere un po 'più amichevole lavorare con esso, sebbene non funzioni per rsync- chiamate over-ssh.

L'altro vantaggio di rsync è che può eseguire la copia resume-on-interrupt. Particolarmente utile se copi molti file o anche file di grandi dimensioni su reti meno affidabili.

Se stai copiando un'unità locale e una rete entrambe disponibili per lo stesso Mac, puoi fare:

rsync -avz /Volumes/LocallyAttachedDrive/path/to/big-movie.mov /Volumes/RemoteShare/path/

E hai finito.

Se si tratta di una directory (che raggruppa come .app ) puoi fare una copia completa e ricorsiva con:

rsync -avz /Volumes/LocallyAttachedDrive/path/to/my-bundle.app /Volumes/RemoteShare/path/

Se non hai accesso a Finder / Bonjour al sink, puoi eseguire rsync-over-ssh:

rsync -avz /Volumes/LocallyAttachedDrive/path/to/my-bundle.app remoteuser@remotehost:/Volumes/RemoteShare/path/

È possibile generare una chiave condivisa in modo da non dover inserire una password, se lo desideri.

Modifica: puoi utilizzare rsync per verificare se due alberi sono uguali all'opzione --dry-run/-n . Se ho l'albero dei sorgenti /Volumes/dir e l'ho copiato in /Volumes/ConnectedDrive/dir , posso confrontarli con:

rsync -acvn /Volumes/dir /Volumes/ConnectedDrive/

L'output mi dirà se è necessario copiare tutti i file nel sink per rendere il sink uguale alla sorgente.

Ad esempio, se ho sincronizzato due alberi:

> rsync -avz ./8779 ./a/
building file list ... done
8779/
8779/.DS_Store
8779/logs/
8779/logs/MasterLog.txt
8779/logs/StartLog.txt

sent 893980 bytes  received 98 bytes  596052.00 bytes/sec
total size is 10034671  speedup is 11.22

Confrontarli per l'uguaglianza non dovrebbe comportare nessuna operazione richiesta:

> rsync -acvn ./8779 ./a/
building file list ... done

sent 213 bytes  received 20 bytes  155.33 bytes/sec
total size is 10034671  speedup is 43067.26

Se il sink fosse leggermente diverso vedremmo un output come questo:

> echo foo >> a/8779/logs/MasterLog.txt 

> rsync -acvn ./8779 ./a/              
building file list ... done
8779/logs/MasterLog.txt

sent 219 bytes  received 26 bytes  490.00 bytes/sec
total size is 10034671  speedup is 40957.84

Ora sappiamo che il file MasterLog.txt non è lo stesso.

    
risposta data 28.03.2012 - 18:23
fonte
1
md5 -r file1 file2

stamperà gli hash di entrambi i file in modo da poterli confrontare con gli occhi. Il flag -r stampa prima gli hash (piuttosto che il nome del file prima) in modo che gli hash si allineano sul margine sinistro - rende più facile il confronto visivo.

    
risposta data 28.03.2012 - 19:39
fonte
0

Rimanerei con MD5 se hai bisogno di una verifica assoluta che i file siano gli stessi. Potresti scrivere un piccolo script bash per recuperare le directory e generare / controllare l'hash per ogni file.

    
risposta data 28.03.2012 - 18:54
fonte

Leggi altre domande sui tag