Usa idem per copiare file e directory in modo intelligente dal terminale Mac

La maggior parte degli utenti da lungo tempo si affidano al comando cp per copiare file e directory, ma Mac OS X offre un'altra soluzione con il comando 'ditto'. Ditto è leggermente più avanzato, ma può essere vantaggioso per "cp" per diversi motivi, in quanto conserva non solo gli attributi e le autorizzazioni di proprietà ma anche i fork delle risorse file e i metadati di file e cartelle, assicurando essenzialmente che il file e / o le cartelle siano copiati esattamente . Inoltre, idem può essere usato per copiare un file o una cartella in una directory sorgente, ma se tale fonte non esiste ancora, idem la creerà automaticamente. Inoltre, se la cartella di destinazione esiste, i contenuti copiati verranno uniti insieme nella directory di destinazione. Infine, idem segue anche collegamenti simbolici, rendendolo particolarmente utile se sei un utente pesante del comando ln.

Per capire meglio il comando idem, eseguiamo alcuni esempi con la sintassi reale.

Usando Ditto per copiare file / cartelle

Nella sua forma più semplice, idem funziona in modo molto simile al comando cp, con la sintassi di base come segue:

ditto source destination

Ad esempio, se vuoi copiare ~ / Desktop / FluffyBackups in / Volumes / FluffyBackups / devi semplicemente digitare quanto segue:

ditto ~/Desktop/FluffyBackups /Volumes/FluffyBackups/

Ancora una volta, ciò manterrà tutti i dettagli dei metadati di proprietà e risorse dei file copiati, il che potrebbe essere particolarmente importante se si copiano file da una directory utente a un'altra o se si desidera conservare qualcosa come i tempi di modifica dei file.

Se non si è sicuri dei contenuti di origine e destinazione, è sempre possibile confrontare i due con il comando comm o il comando diff prima di procedere con il comando ditto.

Utilizzo di Ditto per unire directory e contenuto della cartella

Ricorda, idem controllerà per vedere se la destinazione esiste già, e se lo fa, unirà le directory della sorgente alla destinazione. Questo è importante ed estremamente utile, rendendolo uno dei modi più semplici per unire le directory dalla riga di comando in OS X (anche se ora è facile anche nel Finder).

ditto ~/Pictures/Fall2015/ /Volumes/PhotoBackup/2015/

Ciò porterebbe tutte le foto da "Fall2015" e le copierà nella directory preesistente "2015", unendo efficacemente i contenuti dalla sorgente alla destinazione. Anche in questo caso, il comportamento di unione si verifica quando la destinazione esiste già, se la destinazione non esiste verrà creata come specificato o come nome di origine.

Se si sta utilizzando idem per copiare i dati dalle directory con collegamenti simbolici, l'uso del flag -V (verbose all) è utile perché visualizzerà ogni file e collegamento simbolico che è stato copiato. Nota -V è diverso da -v, che mostra solo i file come output e non i collegamenti simbolici.

Copia senza metadati usando Ditto

Se per qualche motivo non vuoi copiare i metadati e i fork delle risorse, puoi usare il flag -norsrc in questo modo:

ditto -V --norsrc ~/Sample/Folder /Volumes/NoMetadataBackups

Usando il tipo di sconfitta di -norsrc flag un vantaggio primario di idem, ma può essere utile in alcuni casi.

Puoi imparare molto di più sull'eccellente comando idem leggendo la sua pagina di manuale, accessibile in OS X digitando:

man ditto

Come al solito, utilizzare i tasti freccia per spostarsi su e giù nella pagina di manuale.

Prima di fare affidamento su iditto pesantemente, assicurati di provarlo un paio di volte con spostamenti di file irrilevanti e unioni di directory per capire come funziona con l'utilizzo pianificato.