La copie via l'utilitaire tar possède de nombreux atouts face à un simple cp. En effet, quand on souhaite copier une structure de fichier, on s'attends logiquement à retrouver exactement la même en destination. Les fichiers et répertoires, bien sûr, mais aussi les droits sur les fichiers, les liens symboliques et les propriétaires. Or, il arrive fréquemment qu'une ou plusieurs parties de ces informations ne soit pas conservées (notamment les propriétaires). La commande tar résout ces soucis. Voici son utilisation :
- Créer une archive avec le répertoire source. Au lieu de créer un fichier, rediriger vers la sortie standard (utiliser le caractère -)
- Créer un pipe pour éviter la création de fichiers temporaires
- Changez de répertoire, dans celui de destination (ou utiliser l'option -C de tar)
- Extraire l'archive depuis l'entrée standard (caractère -)
Voici, résumé en une commande :
delovan@x-301:~$ tar cf - /chemin/vers/la/source | tar -C /chemin/vers/la/destination/ -x -f -
Vous pouvez également utiliser ces commandes pour copier de serveur à serveur par ssh ! Il suffit d'adapter la commande de cette façon :
delovan@x-301:~$ tar czf - /chemin/vers/la/source | ssh login@serveur "tar xzf -C /chemin/vers/la/destination/ -"
Le lecteur averti aura remarqué l'utilisation du -z de tar qui permet au passage la compression gzip pour économiser la bande passante utilisée par ssh et augmenter la rapidité du transfert.