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

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche


  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix, l'interface console
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
    13. Locale
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms BIND
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de fichiers FTP
    8. Le serveur Web Apache
    9. La base de données MySQL
    10. Le serveur de mails Postfix
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs


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[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

Syntaxe :

 $ tar cf <nom du fichier tar> <nom du répertoire à archiver>

Si vous rajoutez v après c, la commande va afficher à l'écran toutes ses actions.

Exemple:

 # tar cvf etc.tar /etc
 tar: Removing leading `/' from member names /etc
 # ls -l etc.tar
 -rw-r--r-- 1 root root 2829320 Nov 12 18:41 etc.tar

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[modifier | modifier le wikicode]

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

 $ tar tf <nom du fichier tar>

Restitution[modifier | modifier le wikicode]

 # tar xf <nom du fichier tar>

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

Exemple:

 # tar xvf etc.tar
 etc/
 etc/GNUstep/
 etc/GNUstep/Defaults/
 etc/GNUstep/Defaults/WMGLOBAL
 etc/GNUstep/Defaults/WMRootMenu
 etc/GNUstep/Defaults/WMState
 ...

Compresser un fichier avec gzip[modifier | modifier le wikicode]

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[modifier | modifier le wikicode]

 $ gzip <nom du fichier à compresser>

Exemple:

 # ls -l images.tar*
 -rw-r--r-- 1 root      root      10240 Nov  8 20:00 images.tar
 # gzip images.tar
 # ls -l images.tar*
 -rw-r--r-- 1 root      root       4662 Nov  8 20:00 images.tar.gz

En utilisant ls -l , on voit trés bien la taille du fichier images non compressé, qui est passé de 10240 octets à 4662 octets.

Décompresser un fichier[modifier | modifier le wikicode]

 $ gzip -d <nom du fichier gzip>

Exemple:

 # ls -l images.tar*
 -rw-r--r-- 1 root      root       4662 Nov  8 20:00 images.tar.gz
 # gzip -d images.tar.gz
 # ls -l images.tar*
 -rw-r--r-- 1 root      root      10240 Nov  8 20:00 images.tar

Combiner tar et gzip[modifier | modifier le wikicode]

On peut combiner tar et gzip pour archiver et compresser en une action (option z) :

 # tar cvzf <nom du fichier archivé compressé>.tar.gz <nom du répertoire à archiver et compresser>

Targzip.jpg

À faire...
link={{{link}}}

parler des autres outils : dump/restore, compress, cpio ...

Les alternatives à gzip[modifier | modifier le wikicode]

bzip2[modifier | modifier le wikicode]

bzip2 est un autre algorithme de compression. Il est plus performant mais beaucoup moins rapide que gzip.

Pour compresser un fichier avec bzip2 :

 # bzip2 unfichier

Pour le décompresser :

 # bzip2 -d unfichier.bz2


Tout comme gzip, on peut indiquer à tar d'utiliser bzip2 pour compresser l'archive (option j):

 # tar cjf cible.tar.bz2 /repasauver

Comparaison des logiciels de compression[modifier | modifier le wikicode]

Comparaison des logiciels de compression

Un shell script de sauvegarde journalière de /etc[modifier | modifier le wikicode]

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

 #!/bin/bash
 #
 # Ne pas oublier : 
 # - de creer le repertoire /backup : mkdir /backup
 # - de rendre ce script executable : chmod +x backup_etc
 #
 # Tester le script une fois manuellement : ./backup_etc
 #
 # Le rajouter dans la crontab
 DATEJOUR=$(date +"%Y-%m-%d-%H-%M-%S")
 REPABACKUPER="/etc"
 REPBACKUP="/backup"
 NOMFIC=$REPBACKUP/etc-$DATEJOUR.tgz
 tar czf $NOMFIC $REPABACKUPER


Les sauvegardes incrémentales[modifier | modifier le wikicode]

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 :

 # find / -mtime -1 -type f

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:

 # find / \( -path /proc -o -path /dev -o -path /sys \) -prune -o 
   -mtime -1 -type f -print > /tmp/fic_du_jour

On peut ensuite appeler la commande tar avec l'option -T qui permet d'indiquer la liste des fichiers à archiver :

 # tar cz -T /tmp/fic_du_jour -f backup.tgz

Grâce aux tubes (pipe), on peut s'affranchir de passer par un fichier temporaire et directement enchaîner les deux commandes :

 # find / \( -path /proc -o -path /dev -o -path /sys \) -prune -o 
   -mtime -1 -type f -print | tar cz -T - -f backup.tgz

Toujours grâce aux tubes, on peut découper le fichier obtenu en plusieurs fichiers d'une taille donnée :

 # find / \( -path /proc -o -path /dev -o -path /sys \) -prune -o 
   -mtime -1 -type f -print | tar cz -T - | split - -b 5m backup_
 
 # ls -lh backup_*
 -rw-r--r-- 1 root root 5,0M 2007-12-06 14:30 backup_aa
 -rw-r--r-- 1 root root 5,0M 2007-12-06 14:30 backup_ab
 -rw-r--r-- 1 root root 5,0M 2007-12-06 14:30 backup_ac
 -rw-r--r-- 1 root root 3,5M 2007-12-06 14:30 backup_ad

Pour re-assembler les fichiers découpés, on utilise la commande cat :

 # cat backup_* > backup.tgz

Les logiciels spécialisés[modifier | modifier le wikicode]

À faire...
link={{{link}}}

parler de rsync, amanda, bacula, mondorescue et partimage