# Le système d'exploitation GNU-Linux/Le backup : tar et gzip

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]
Régulièrement, il vous faudra archiver des informations, en particulier des données utilisateurs. Pour cela, le système GNU/Linux intègre 2 outils: TAR et GZIP. Comme vous allez le voir, ces 2 outils sont complémentaires dans le procéssus d'archivage des données, ou backup.

## Archiver des données avec tar

Le nom de cette commande vient du système de sauvegarde sur bande : Tape ARchive. Le principe est simple : prendre un grand nombre de fichiers (et/ou de répertoires) et les regrouper en un seul gros. tar est une commande récursive. Elle va archiver toute l'arborescence en partant du répertoire que vous lui spécifiez.

### Archivage

Syntaxe :
Si vous rajoutez v après c, la commande va afficher à l'écran toutes ses actions.
Exemple :
Note: Comme vous le voyez sur notre exemple, la commande tar retire le / du répertoire parent. En faisant cela, elle évite les écrasements de fichiers dans le cas ou vous restituez votre fichier au même endroit.

### Test de l'archive

Une fois l'archivage effectué, vous pouvez vérifier votre archive avec la commande :

### Restitution

De même, si vous rajoutez v après x, la commande affichera les informations.
Exemple :

## gzip

La commande gzip est un compresseur de données. Il va partir d'un fichier et compresser l'information pour en diminuer la taille.

### Compresser un fichier

Exemple :
En utilisant ls -l , on voit très bien la taille du fichier images non compressé, qui est passé de 10240 octets à 4662 octets.
Pour compresser chaque fichier d'un dossier, utiliser l'option "recursive" : gzip -r. Par contre gzip ne permet pas de compresser tout le dossier dans un seul fichier .gz (d'où l’intérêt de le combiner avec tar).
Pour compresser sous un autre nom, deux solutions :
* -S (suffixe)
* -c (sortie standard). Ex : gzip -c test.log > $(date +"%y_%m_%d")_test.log.gz

### Décompresser un fichier

Exemple :

### Lire un .gz

Il existe la commande zgrep pour filtrer le contenu des fichiers gzippés, évitant ainsi de les décompresser, grepper, puis recompresser. Ex :

## Combiner tar et gzip

On peut combiner tar et gzip pour archiver et compresser en une action (option z) :
parler des autres outils : dump/restore, compress, cpio ...

## Les alternatives à gzip
### bzip2

bzip2 est un autre algorithme de compression. Il est plus performant mais beaucoup moins rapide que gzip.
Pour compresser un fichier avec bzip2 :
Pour le décompresser :
Tout comme gzip, on peut indiquer à tar d'utiliser bzip2 pour compresser l'archive (option j):

### Comparaison des logiciels de compression

Comparaison des logiciels de compression

## Un shell script de sauvegarde journalière de /etc

Voici un shell script qui permet de sauvegarder quotidiennement le répertoire /etc :

## Les sauvegardes incrémentales

La commande find permet de trouver des fichiers correspondants à des critères donnés. On peut par exemple connaître la liste des fichiers modifiés depuis 1 jour :
En combinant la commande find et la commande tar, on peut ainsi facilement sauvegarder les fichiers modifiés depuis la veille, et ainsi réaliser une sauvegarde incrémentale.
La commande suivante retourne la liste de tous les fichiers du système modifiés depuis hier (en excluant les fichiers contenus dans /proc, /dev et /sys), et stocke la liste de ces fichiers dans le fichier /tmp/fic_du_jour:
On peut ensuite appeler la commande tar avec l'option -T qui permet d'indiquer la liste des fichiers à archiver :
Grâce aux tubes (pipe), on peut s'affranchir de passer par un fichier temporaire et directement enchaîner les deux commandes :
Toujours grâce aux tubes, on peut découper le fichier obtenu en plusieurs fichiers d'une taille donnée :
Pour re-assembler les fichiers découpés, on utilise la commande cat :

## Les logiciels spécialisés

parler de rsync, amanda, bacula, mondorescue et partimage