« Le système d'exploitation GNU-Linux/Le backup : tar et gzip » : différence entre les versions

Contenu supprimé Contenu ajouté
rajout du shell script de sauvegarde journalière + des sauvegardes incrémentales
Ligne 92 :
[[Image:targzip.jpg]]
 
{{TODO|parler des autres outils : dump/restore, compress, cpio ...}}
{{TODO|coller le script qui fait les sauvegardes journalières de /etc}}
 
== Les alternatives à gzip ==
 
{{TODO|parler des autres compresseurs, dont notamment bzip2}}
=== bzip2 ===
'''bzip2''' est un autre algorithme de compression, compatible avec tar.
Il est plus performant mais beaucoup moins rapide que gzip.
 
Pour compresser un fichier avec '''bzip2''' :
Il peut être utilisé séparément :
 
bzip2 cible.bzip2 fichier.asauver
# bzip2 unfichier
Ou intégré à tar :
 
tar -cjf cible.tar.bzip2 /repasauver
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.bzip2bz2 /repasauver
 
{{TODO|parler des autres logiciels de compression : 7zip, lzop ...}}
 
== Un shell script de sauvegarde journalière de /etc ==
 
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
 
{{TODO|parler des autres outils : dump/restore, compress, cpio ...}}
 
== Les sauvegardes incrémentales ==
La commande "'''find -type f'''" permet de trouver les fichiers.
find / -mtime -1 -type f
> Retourne la liste des fichiers modifiés depuis 1 jour
 
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 / \(path /proc -o -path /dev -o -path /sys \) -prune -o -mtime -1 -type f -print > /tmp/fic_du_jour
> Retourne la liste de tous les fichiers du système à sauvegarder, sauf /proc, /dev et /sys
> Et renvoi la réponse dans le fichier /tmp/fic_du_jour
 
# find / -mtime -1 -type f
Reste à importer cette liste dans tar
 
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
> Et renvoi-mtime la-1 réponse-type dansf le-print fichier> /tmp/fic_du_jour
 
On peut ensuite appeller 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 :
tar cz -T /tmp/fic_du_jour -f backup.tgz
 
# cat backup_* > backup.tgz
{{TODO|réaliser des backups incrémentaux avec les commandes find + tar}}
 
{{TODO|découper un fichier backup volumineux avec la commande split}}
 
== Les logiciels spécialisés ==