Tar

De knowledge
Aller à la navigation Aller à la recherche

Tar est une commande pour "agréger" les fichiers dans un seul fichier.

Elle est archi connue et il n'est peut être pas la peine de la décrire ici.

En revanche on peut avoir des utilisations "avancées" qui ne sont pas évidentes.

Attention.png Attention quand on fait des transfert entre deux machines par l'intermédiaire de fichiers TAR.

L'avantage est que les métadonnées de fichiers sont conservées. Les user/groupes les droits d'accès "srwx" sont conservés mais il y a une limite: Ce ne sont pas les noms de user qui sont mentionnés dans le TAR mais l'id de l'utilisateur. Celui que l'on trouves dans /etc/passwd (et /etc/groups)

Il faut vérifier que ces id sont cohérents des deux côtés.

Faire une sauvegarde à distance.

On veut sauvegarder des fichiers sur un serveur mais il n'y a pas assez de place en local pour le faire. La solution serait de lancer le tar sur sur le serveur distant et de récupérer le résultat en local.

la commande tar accepte de rediriger la sortie vers un fichier et - représente la sortie standard. En revanche la commande :

tar cf - /sources

ne fonctionne pas.

tar: Refusing to write archive contents to terminal (missing -f option?)
tar: Error is not recoverable: exiting now

Pour d'obscures raisons de sécurité tar repère que vous voulez envoyer le flux à l'écran et refuse. Pourtant si on fait:

tar cf - /sources > sources.tar

on a bien un fichier sources.tar. La ruse consiste à lancer la même chose par ssh et de récupérer la sortie standard en local!

ssh adm@lifou.pinon-hebert.fr "tar cvzf - /mnt/disk0/" > sauvagarde.tgz

En plus ici on zippe les données. Ca prendra moins de place sur le disque mais, surtout, la bande passante est économisée d'autant.

Dupliquer une arborescence d'un serveur à un autre

C'est simple au lieu de sauvegarder dans un fichier .tar ou .tgz on l'envoie en entrée d'une commande tar d'extraction.

mkdir remote_sources
ssh admin@lifou.pinon-hebert.fr "tar czf - sources" | tar xzf - -C remote_sources