Accueil

Copier un répertoire avec tar

Il peut arriver que vous deviez copier le contenu d'un répertoire vers un autre. Bien que cela soit possible via la commande cp, cela peut vite devenir compliqué si vous voulez exclure certains fichiers, préserver les droits et les liens, être sur d'avoir les fichiers cachés, ...

C'est pour cela que nous allons utiliser la commande tar (qui de plus est bien plus rapide que cp), avec un tube. Voici différents cas pratiques que vous pourrez facilement adapter à vos besoin.

Copier le contenu du répertoire rep_source vers le répertoire rep_dest :

cd rep_dest
tar -C /chemin/rep_source -cvf - . | tar xvf -

Exclure tous les fichiers *.bak :

cd rep_dest
tar -C /chemin/rep_source --exclude *.bak -cvf - . | tar xvf -

Exclure les répertoires source et extra :

cd rep_dest
tar -C /chemin/rep_source --exclude source --exclude extra -cvf - . | tar xvf -

Exclure une liste de fichier et de répertoire. Pour cela, inscrivez dans un fichier, fichiers.txt par exemple, la liste des fichiers que vous ne souhaitez pas copier :

admin.php
serge.txt
compte.doc
password.txt
extra
source

Puis vous passez ce fichier à tar :

cd rep_dest
tar -C /chemin/rep_source --exclude-from fichiers.txt -cvf  - . | tar xvf -

Tar vous permet bien d'autres subtilités impossibles à réaliser avec cp, je vous laisse les découvrir à l'aide de la page de manuel de tar :

man tar

Ou du manuel complet :

info tar

Thèmes : #administration #trucs

Sauf indication contraire, ce document est placé sous licence CC-BY-SA 3.0.