{{tag>Brouillon Archive}} # Shell GNU tar - Commande tar ~~~bash man tar info tar ~~~ ## Exemples / options ### Inclusion / Exclusion ~~~bash tar --exclude=/data/sub1 --exclude=/data/sub2 --exclude=/data/sub3 --exclude=/data/sub4 -cf /home/_data.tar /data ~~~ ~~~bash tar --exclude='*/.git/*' -cf /home/_data.tar /data ~~~ Spécifier le chemin racine - éviter 'cd' Utiliser l'option ''-C'' pour indiquer le chemin ~~~bash tar czf ~/tmp/nagios.tgz -C ~/tmp/ --exclude='.git' --owner=1013 --group=250 nagios/ ~~~ Archiver des fichiers cachés (dot files) ~~~bash 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 ~~~bash tar --strip-components 1 -xvf plop.tar.gz ~~~ ### Droits / permissions / owner GNU tar allows you not to preserve the owner and permissions. ~~~bash 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 ~~~bash GZIP=-9 tar -zcf ... files to compress ... ~~~ Devient ~~~bash tar -I 'gzip -9' -cf ... files to compress ~~~ ## Autres outils Voir aussi * cpio * archivemount (et avfs / mountavfs) ### pkgdiff / tardiff pkgdiff pour faire un diff de deux fichiers tar ~~~bash pkgdiff -hide-unchanged nagios-3.0_v001.tgz nagios-3.0_v002.tgz ~~~ **pkgdiff** se base sur l'extention du fichier** ~~~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 ~~~ Cela génére un rapport HTML. Il y a aussi tardiff **mais il bug** ~~~bash 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 à ~~~bash 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 ~~~bash sudo apt-get install archivemount mkdir ~/mnt archivemount Maildir.tar.gz ~/mnt/ rsync -axv ~/mnt/Maildir/.Sent/ Maildir/.Sent/ fusermount -u ~/mnt ~~~