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.