Utilisez idem pour copier des fichiers et des répertoires intelligemment depuis le terminal Mac

La plupart des utilisateurs de ligne de commande utilisent la commande cp pour copier des fichiers et des répertoires, mais Mac OS X offre une autre solution avec la commande 'ditto'. Ditto est légèrement plus avancé mais peut être avantageux pour 'cp' pour plusieurs raisons, car il préserve non seulement les attributs de propriété et les permissions, mais aussi les fichiers de ressources et les métadonnées de fichiers et de dossiers. De plus, ditto peut être utilisé pour copier un fichier ou un dossier dans un répertoire source, mais si cette source n'existe pas encore, idem le créera automatiquement. En outre, si le dossier de destination existe, le contenu copié sera fusionné dans ce répertoire de destination. Enfin, idem suit également les liens symboliques, ce qui le rend particulièrement pratique si vous êtes un gros utilisateur de la commande ln.

Pour mieux comprendre la commande ditto, parcourons quelques exemples avec une vraie syntaxe.

Utiliser Ditto pour copier des fichiers / dossiers

À sa forme la plus simple, ditto fonctionne un peu comme la commande cp, avec la syntaxe de base comme suit:

ditto source destination

Par exemple, si vous souhaitez copier ~ / Desktop / FluffyBackups vers / Volumes / FluffyBackups / vous devez simplement taper ce qui suit:

ditto ~/Desktop/FluffyBackups /Volumes/FluffyBackups/

Cela conservera tous les détails des métadonnées de propriété et de ressource des fichiers copiés, ce qui peut être particulièrement important si vous copiez des fichiers d'un répertoire d'utilisateur à un autre ou si vous souhaitez conserver quelque chose comme les temps de modification des fichiers.

Si vous n'êtes pas certain du contenu de la source et de la destination, vous pouvez toujours comparer les deux avec la commande comm ou la commande diff avant de passer à la commande ditto.

Utiliser Ditto pour fusionner les répertoires et le contenu du dossier

Rappelez-vous, idem vérifiera pour voir si la destination existe déjà, et si c'est le cas, il fusionnera les répertoires de la source à la destination. Ceci est important et extrêmement utile, ce qui en fait l'un des moyens les plus faciles de fusionner les répertoires à partir de la ligne de commande sous OS X (même si c'est maintenant facile dans le Finder).

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

Cela prend toutes les images de "Fall2015" et les copie dans le répertoire préexistant "2015", fusionnant efficacement le contenu de la source à la destination. Encore une fois, le comportement de fusion se produit lorsque la destination existe déjà, si la destination n'existe pas, elle serait créée comme spécifié ou comme nom de source.

Si vous utilisez ditto pour copier des données à partir de répertoires avec des liens symboliques, l'utilisation de l'indicateur -V (verbose all) est utile car elle affiche tous les fichiers et tous les liens symboliques qui ont été copiés. Remarque -V est différent de -v, ce qui montrera seulement les fichiers en sortie, et non les liens symboliques.

Copie sans métadonnées à l'aide de Ditto

Si, pour une raison quelconque, vous ne voulez pas copier les métadonnées et les liens de ressources, vous utilisez le drapeau -norsrc comme ceci:

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

L'utilisation du drapeau -norsrc supprime un avantage principal de idem, mais cela peut être utile dans certains cas.

Vous pouvez en apprendre beaucoup plus sur l'excellente commande ditto en lisant sa page de manuel, accessible sous OS X en tapant:

man ditto

Comme d'habitude, utilisez les touches fléchées pour naviguer vers le haut et vers le bas dans la page de manuel.

Avant de faire confiance à Ditto, assurez-vous de l'essayer quelques fois avec des déplacements de fichiers sans importance et des fusions de répertoires pour comprendre comment cela fonctionne avec votre utilisation prévue.