Archivage et compression
Outils étudiés :
tar
/untar
gzip
/gunzip
bzip2
/bunzip2
xz
/unxz
zip
/unzip
zcat
cpio
/pax
Création de quelques fichiers à la volée :
$ for i in 0 1 2 3 4 5 6 7 8 9 ; do echo "fichier$i" > fichier$i ; done
de manière plus élégante :
$ for ((i=0;i<10;i=i+1)) ; do echo "fichier$i" > fichier$i ; done
ou alors :
$ for i in {0..9} ; do echo "fichier$i" > fichier$i ; done
1. Définitions
- Compression : Réduire la taille d’un fichier par algorithme de compression.
- Archivage : Placer un ensemble de fichiers et/ou de dossiers dans un seul fichier.
- Compression sans archivage :
gzip
/gunzip
,bzip2
/bunzip2
- Archivage avec ou sans compression :
tar
,star
2. Compression gzip/gunzip
gzip
est basé sur l’algorithme Deflate (combinaison des algorithmes LZ77 et Huffman). C’est la méthode de compression la plus populaire sous GNU/Linux.- Compresser un fichier (le fichier est remplacé par son format compressé) :
$ gzip mon_fichier
$ ls -lh
- Décompresser un fichier gzippé :
$ gunzip mon_fichier_compresse.gz
$ls -lah
- ou
$ gzip -d mon_fichier_compresse.gz
- Compresser un fichier de façon optimisée :
$ gzip -9 mon_fichier
- Compresser plusieurs fichiers en un :
$ gzip -c mon_fichier1 mon_fichier2 > mon_fichier_compresse.gz
3. Compression bzip2
- bzip2 est une alternative à gzip, plus efficace mais moins rapide.
- Compresser un fichier :
$ bzip2 mon_fichier
- Décompresser un fichier bzippé :
$ bunzip2 mon_fichier_compresse.bz2
4. Commande tar
- Tar (« tape archiver », en français « archiveur pour bande », son rôle à l’origine) est le programme d’archivage de fichiers le plus populaire sous GNU/Linux et les systèmes Unix. Il est généralement installé par défaut. On peut ajouter à une archive
tar
différents algorithmes de compression. On notera également quetar
préserve les permissions et les propriétaires des fichiers, ainsi que les liens symboliques. - Les programmes
cpio
etpax
peuvent aussi créer des archives en utilisant des redirections (< | >). star
fonctionne de la manière quetar
en supportant les ACLs.
tar : archivage sans compression
- Pour archiver plusieurs fichiers ou un dossier, la commande est la même :
$ tar cvf mon_archive.tar fichier1 fichier2
$ tar cvf mon_archive.tar dossier1/
- Pour extraire une archive tar, tapez :
$ tar xvf mon_archive.tar
- Les principales options de tar sont les suivantes et peuvent se combiner à souhait :
c
/x
: construit / extrait l’archive ;v
: mode bavard ;f
: utilise le fichier donné en paramètre.
tar : archivage avec compression
- Tar peut archiver en utilisant des algorithmes de compression, afin d’avoir des archives moins volumineuses. Par habitude, on suffixe les archives avec un . suivi d’une extension de compression.
- Il suffit pour cela d’ajouter à la commande tar une option de compression :
z
: compression Gunzipj
: compression Bzip2- Pour archiver et compresser un dossier avec Gunzip, tapez :
$ tar cvzf mon_archive.tar.gz dossier1/
- Pour extraire une archive tar.gz, tapez :
$ tar xvzf mon_archive.tar.gz
- De même pour Bzip2 :
$ tar cvjf mon_archive.tar.bz2 dossier1/
$ tar xvjf mon_archive.tar.bz2
star
Le logiciel star est l’équivalent de tar avec le support des ACLs.
# yum -y install star
Si l’option -acl
est choisie les ACLs sont sauvegardées en mode création et restaurées en mode extraction.
5. XZ
XZ Utils
(anciennement LZMA Utils
) est un ensemble d’outils de compression en ligne de commande compressient LZMA et xz
.
XZ Utils
est composé de deux composants principaux :
xz
l’outil de compression similaire àgzip
,liblzma
, une librairie logicielle comparablezlib
Différentes commandes raccourcies existent comme :
lzma
(pourxz --format=lzma
)unxz
(pourxz --decompress; analogous to gunzip
)xzcat
(pourunxz --stdout; analogous to zcat
)
La compression par défaut est xz
Compresser une archive :
xz my_archive.tar # results in my_archive.tar.xz
lzma my_archive.tar # results in my_archive.tar.lzma
Décompresser l’archive :
unxz my_archive.tar.xz # results in my_archive.tar
unlzma my_archive.tar.lzma # results in my_archive.tar
Créer une archive et la compresser :
tar -c --xz -f my_archive.tar.xz /some_directory # results in my_archive.tar.xz
tar -c --lzma -f my_archive.tar.lzma /some_directory # results in my_archive.tar.lzma
Décompresser une archive et extraire son contenu :
tar -x --xz -f my_archive.tar.xz # results in /some_directory
tar -x --lzma -f my_archive.tar.lzma # results in /some_directory
6. ZIP
- ZIP est un vieux format d’archive, mais aussi celui d’une commande pour créer ce type d’archive.
- On utilise alors les commandes
zip
etunzip
.
Création ZIP
$ zip votre_archive.zip [liste des fichiers]
$ zip -r votre_archive.zip [dossier]
- Afin de compresser plusieurs sous-dossiers séparément (bash) :
$ for f in *; do zip "$f.zip" "$f"/*; done
zip -e votre_archive.zip [liste des fichiers]
chiffre le zip et demande un mot de passe.
Extraction unzip
unzip votre_archive.zip -d mon_repertoire
- Extraction de plusieurs .zip d’un même dossier :
$ for f in *.zip ; do unzip "$f" ; done
7. Archives zip découpées
- Quelques fois les archives zip sont découpées comme suit : archive.z01, archive.z02, …, archive.zip
- Il faut rassembler les fichiers dans une seule archive, puis extraire cette dernière :
$ cat archive.z* > archive_globale.zip
$ unzip archive_globale.zip
8. Autres logiciels
La curiosité au vu des résultats des commandes :
apt-cache search backup || yum search backup