Shell GNU tar - Commande tar

man tar info tar

Exemples / options

Inclusion / Exclusion

tar --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4 -cf /home/_data.tar /data
tar --exclude='*/.git/*' -cf /home/_data.tar /data

Spécifier le chemin racine - éviter 'cd'

Utiliser l'option -C pour indiquer le chemin

tar czf ~/tmp/nagios.tgz -C ~/tmp/ --exclude='.git' --owner=1013 --group=250 nagios/

Archiver des fichiers cachés (dot files)

tar cvjf archive.tar.bz2 --exclude .. --exclude . .*

Dot dir dossier point à la racine

Creation d'archive

Dossier “.” (dot dir) à la racine de l'archive

$ tar czvf ../plop.tar.gz .
./
./plop.tar.gz
./check_routerHA.sh
$ tar czvf ../plop.tar.gz *
check_routerHA.sh
plop.tar.gz
# Ou encore
$ tar czvf ../plop.tar.gz --xform="s,^./,," ./*
# Ou
#find . -print0 | tar -T - --null --no-recursion -czf ../plop.tar.gz
$ find . -printf "%P\n" | tar -czf ../plop.tar.gz --no-recursion -T -
# Autre
# find -mindepth 1 .

Extraction d'archive

tar --strip-components 1 -xvf plop.tar.gz

Droits / permissions / owner

GNU tar allows you not to preserve the owner and permissions.

tar -c -f archive.tar --owner=0 --group=0 --no-same-owner --no-same-permissions

Compression

gzip: warning: GZIP environment variable is deprecated; use an alias or script

L'ancienne commande

GZIP=-9 tar -zcf ... files to compress ...

Devient

tar -I 'gzip -9' -cf ... files to compress

Autres outils

Voir aussi

cpio

archivemount (et avfs / mountavfs)

pkgdiff / tardiff (html diff was produced by rfcdiff)

pkgdiff pour faire un diff de deux fichiers tar

pkgdiff -hide-unchanged nagios-3.0_v001.tgz nagios-3.0_v002.tgz

pkgdiff se base sur l'extention du fichier <code bash> # Ne pas faire : pkgdiff -hide-unchanged plop.tgz plop.tgz2 # Mais faire : mv plop.tgz2 plop2.tgz pkgdiff -hide-unchanged plop.tgz plop2.tgz </code> Cela génére un rapport HTML. Il y a aussi tardiff mais il bug**

tardiff nagios-3.0_v001.tgz nagios-3.0_v002.tgz # BUG: L'option ''-m'' ne fonctionne pas # C'est comme si cette option était ignorée # tardiff affiche bien les fichiers ajoutés mais pas les fichiers modifiés tardiff -m nagios-3.0_v001.tgz nagios-3.0_v002.tgz

Cela revient à

diff <(tar tf nagios-3.0_v001.tgz | sort ) <(tar tf nagios-3.0_v002.tgz | sort ) # Pour les droits, propriétaire, date diff <(tar tvf nagios-3.0_v001.tgz | sort ) <(tar tvf nagios-3.0_v002.tgz | sort )

Autres

Voir :

--strip-components=NUMBER

--strip

Pb

Erreur Cannot hard link to

$ tar -xzf Maildir.tar.gz Maildir/.Sent/
tar: Maildir/.Sent/cur/1665228871.M836500P20407.vps788223,S=3786957,W=3836179\:2,S: Cannot hard link to ‘Maildir/.Trash/cur/1665228871.M836500P20407.vps788223,S=3786957,W=3836179:2,S’: No such file or directory
tar: Exiting with failure status due to previous errors

Monter une archive tar.gz

sudo apt-get install archivemount mkdir ~/mnt archivemount Maildir.tar.gz ~/mnt/ rsync -axv ~/mnt/Maildir/.Sent/ Maildir/.Sent/ fusermount -u ~/mnt