Sauvegardes et restaurations
La sauvegarde va permettre de répondre à un besoin de conservation et de restauration des données de manière sûre et efficace.
La sauvegarde permet de se protéger des éléments suivants :
-
Destruction : volontaire ou involontaire. Humaine ou technique. Virus, …
-
Suppression : volontaire ou involontaire. Humaine ou technique. Virus, …
-
Intégrité : données devenues inutilisables.
Aucun système n’est infaillible, aucun humain n’est infaillible, aussi pour éviter de perdre des données, il faut les sauvegarder pour être en mesure de les restaurer suite à un problème.
Les supports de sauvegarde sont conservés dans une autre pièce (voire bâtiment) que le serveur afin qu’un sinistre ne vienne pas détruire le serveur et les sauvegardes.
De plus, l’administrateur devra régulièrement vérifier que les supports soient toujours lisibles.
Généralités
Il existe deux principes, la sauvegarde et l'archive.
-
L’archive détruit la source d’information après l’opération.
-
La sauvegarde conserve la source d’information après l’opération.
Ces opérations consistent à enregistrer des informations dans un fichier, sur un périphérique ou un support (bandes, disques, …).
La démarche
La sauvegarde nécessite de l’administrateur du système beaucoup de discipline et une grande rigueur. Il est nécessaire de se poser les questions suivantes :
-
Quel est le support approprié ?
-
Que faut-il sauvegarder ?
-
Nombre d’exemplaires ?
-
Durée de réalisation de la sauvegarde ?
-
Méthode ?
-
Fréquence ?
-
Automatique ou manuelle ?
-
Où la stocker ?
-
Délai de conservation ?
Méthodes de sauvegardes
-
Complète : un ou plusieurs systèmes de fichiers sont sauvegardés (noyau, données, utilitaires, …).
-
Partielle : un ou plusieurs fichiers sont sauvegardés (configurations, répertoires, …).
-
Différentielle : uniquement les fichiers modifiés depuis la dernière sauvegarde complète sont sauvegardés.
-
Incrémentale : uniquement les fichiers modifiés depuis la dernière sauvegarde sont sauvegardés.
-
Périodicité
-
Ponctuelle : à un instant donné (avant une mise à jour du système, …).
-
Périodique : Journalière, hebdomadaire, mensuelle, …
Avant une modification du système, il peut être utile de faire une sauvegarde. Cependant, il ne sert à rien de sauvegarder tous les jours des données qui ne sont modifiées que tous les mois. |
Méthodes de restauration
En fonction des utilitaires disponibles, il sera possible d’effectuer plusieurs types de restaurations.
-
Restauration complète : arborescences, …
-
Restauration sélective : partie d’arborescences, fichiers, …
Il est possible de restaurer la totalité d’une sauvegarde mais il est également possible d’en restaurer uniquement une partie. Toutefois, lors de la restauration d’un répertoire, les fichiers créés après la sauvegarde ne sont pas supprimés.
Pour récupérer un répertoire tel qu’il était au moment de la sauvegarde il convient d’en supprimer complètement le contenu avant de lancer la restauration. |
Les outils
Il existe de nombreux utilitaires pour réaliser les sauvegardes.
-
outils d’éditeurs ;
-
outils graphiques ;
-
outils en ligne de commande :
tar
,cpio
,pax
,dd
,dump
, …
Les commandes que nous verrons ici sont tar
et cpio
.
-
tar
:-
simple d’utilisation ;
-
permet l’ajout de fichiers à une sauvegarde existante.
-
-
cpio
:-
conserve les propriétaires ;
-
groupes, dates et droits ;
-
saute les fichiers endommagés ;
-
système de fichiers complet.
-
Ces commandes sauvegardent dans un format propriétaire et standardisé. |
Convention de nommage
L’emploi d’une convention de nommage permet de cibler rapidement le contenu d’un fichier de sauvegarde et d’éviter ainsi des restaurations hasardeuses.
-
nom du répertoire ;
-
utilitaire employé ;
-
options utilisées ;
-
date.
Le nom de la sauvegarde doit être un nom explicite. |
La notion d’extension sous Unix n’existe pas. |
Tape ArchiveR - tar
La commande tar
permet la sauvegarde sur plusieurs supports successifs (options multi-volumes).
Il est possible d’extraire tout ou partie d’une sauvegarde.
tar
sauvegarde implicitement en mode relatif même si le chemin des informations à sauvegarder est mentionné en mode absolu. Toutefois, la sauvegarde et la restauration en mode absolue sont possibles.
Consignes de restauration
Il faut se poser les bonnes questions :
-
quoi : partielle ou complète ;
-
où : lieu où les données seront restaurées ;
-
comment : absolu ou relatif.
Avant une restauration, il faut prendre le temps de la réflexion et déterminer la méthode la mieux adaptée afin d’éviter toute erreur. |
Les restaurations s’effectuent généralement après un problème qui doit être résolu rapidement. Une mauvaise restauration peut, dans certains cas, aggraver la situation.
La sauvegarde avec tar
L’utilitaire par défaut pour créer des sauvegardes dans les systèmes UNIX est la commande tar
. Ces sauvegardes peuvent être compressées par bzip2
, xz
, lzip
, lzma
, lzop
, gzip
, compress
ou encore zstd
.
tar
permet d’extraire aussi bien un seul fichier ou un répertoire d’une sauvegarde, visualiser son contenu ou valider son intégrité, etc.
Estimer la taille d’une sauvegarde
La commande suivante estime la taille en kilo octet d’un éventuel fichier tar :
$ tar cf - /repertoire/a/sauvegarder/ | wc -c
20480
$ tar czf - /repertoire/a/sauvegarder/ | wc -c
508
$ tar cjf - /repertoire/a/sauvegarder/ | wc -c
428
Attention, la présence de « - » dans la ligne de commande perturbe |
Convention de nommage d’une sauvegarde tar
Voici un exemple de convention de nommage d’une sauvegarde tar
, sachant que la date est à ajouter au nom.
Clés | Fichiers | Suffixe | Remarques : Sauvegarde de : |
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
… |
Créer une sauvegarde
Créer une sauvegarde en mode relatif
Créer une sauvegarde non-compressée et implicitement en mode relatif s’effectue avec les clefs cvf :
tar
pour créer une sauvegardetar c[vf] [support] [fichiers(s)]
Exemple :
[root]# tar cvf /sauvegardes/home.133.tar /home/
Clef | Description |
---|---|
|
Crée une sauvegarde. |
|
Affiche le nom des fichiers traités. |
|
Permet d’indiquer le nom de la sauvegarde (support). |
Le tiret ( |
Créer une sauvegarde en mode absolu
Créer une sauvegarde non-compressée et explicitement en mode absolu s’effectue avec les clefs cvfP :
tar
pour créer une sauvegarde en mode absolu$ tar c[vf]P [support] [fichiers(s)]
Exemple :
[root]# tar cvfP /sauvegardes/home.133.P.tar /home/
Clef | Description |
---|---|
|
Créer une sauvegarde en mode absolu. |
Avec la clef P, le chemin des fichiers à sauvegarder doit être renseigné en absolu. Si les deux conditions (clef P et chemin absolu) ne sont pas indiquées, la sauvegarde est en mode relatif. |
Créer une sauvegarde compressée avec gzip
Créer une sauvegarde compressée en gzip
s’effectue avec les clefs cvfz :
$ tar cvzf sauvegarde.tar.gz dirname/
Clef | Description |
---|---|
|
Compresse la sauvegarde en gzip. |
L’extension |
Conserver les clefs cvf (tvf ou xvf) inchangées pour toutes les manipulations de sauvegarde et simplement ajouter à la fin de la clef celle de compression facilite la compréhension de la commande (par exemple cvfz ou cvfj, etc…). |
Créer une sauvegarde compressée avec bzip
Créer une sauvegarde compressée en bzip
s’effectue avec les clefs cvfj :
$ tar cvfj sauvegarde.tar.bz2 dirname/
Clef | Description |
---|---|
|
Compresse la sauvegarde en bzip2. |
Les extensions |
Compressions compress
, gzip
, bzip2
, lzip
et xz
La compression, et par conséquence la décompression, aura un impact sur la consommation de ressources (temps et utilisation CPU).
Voici un classement de la compression d’un ensemble de fichiers textes, du moins au plus efficace :
-
compress (
.tar.Z
) -
gzip (
.tar.gz
) -
bzip2 (
.tar.bz2
) -
lzip (
.tar.lz
) -
xz (
.tar.xz
)
Ajouter un fichier ou un répertoire à une sauvegarde existante
Il est possible d’ajouter un ou plusieurs éléments à une sauvegarde déjà existante.
tar
pour ajouter un élément à une sauvegarde existantetar {r|A}[clé(s)] [support] [fichiers(s)]
Pour ajouter /etc/passwd
à la sauvegarde /sauvegardes/home.133.tar
:
[root]# tar rvf /sauvegardes/home.133.tar /etc/passwd
Ajouter un répertoire est similaire. Ici ajouter dirtoadd
à sauvegarde_name.tar
:
$ tar rvf sauvegarde_name.tar dirtoadd
Clef | Description |
---|---|
|
Ajoute un ou plusieurs fichiers à la fin d’une sauvegarde sur support à accès direct (disque dur). |
|
Ajoute un ou plusieurs fichiers à la fin d’une sauvegarde sur support à accès séquentiel (bande). |
Il n’est pas possible d’ajouter des fichiers ou des dossiers à une sauvegarde compressée.
|
Si la sauvegarde a été réalisée en mode relatif, ajoutez des fichiers en mode relatif. Si la sauvegarde a été réalisée en mode absolu, ajoutez des fichiers en mode absolu. En mélangeant les modes, vous risquez d’avoir des soucis au moment de la restauration. |
Lister le contenu d’une sauvegarde
Visualiser le contenu d’une sauvegarde sans l’extraire est possible.
tar
pour lire le contenu d’une sauvegardetar t[clé(s)] [support]
Clef | Description |
---|---|
|
Affiche le contenu d’une sauvegarde (compressée ou non). |
Exemples :
$ tar tvf sauvegarde.tar
$ tar tvfz sauvegardee.tar.gz
$ tar tvfj sauvegarde.tar.bz2
Lorsque le nombre de fichiers contenus dans une sauvegarde devient important, il est possible de passer, par un pipe le résultat de la commande tar
à un pager (more
, less
, most
, etc.) :
$ tar tvf sauvegarde.tar | less
Pour lister ou extraire le contenu d’une sauvegarde, il n’est pas nécessaire de mentionner l’algorithme de compression utilisé à la création de la sauvegarde. C’est-à-dire qu’un |
Toujours vérifier le contenu d’une sauvegarde. |
Vérifier l’intégrité d’une sauvegarde
L’intégrité d’une sauvegarde peut être testée avec la clef W au moment de sa création :
$ tar cvfW file_name.tar dir/
L’intégrité d’une sauvegarde peut être testée avec la clef d après sa création :
$ tar vfd file_name.tar dir/
En ajoutant un second v à la clé précédente, vous obtiendrez la liste des fichiers archivés ainsi que les différences entre les fichiers archivés et ceux présents dans le système de fichiers.
|
Extraire (untar) une sauvegarde
Extraire (untar) une sauvegarde *.tar
s’effectue avec les clefs xvf :
etc/exports
de la sauvegarde /sauvegardes/etc.133.tar
dans le répertoire etc du répertoire actif.$ tar xvf /sauvegardes/etc.133.tar etc/exports
/sauvegardes/home.133.tar.bz2
dans le répertoire actif.[root]# tar xvfj /sauvegardes/home.133.tar.bz2
/sauvegardes/etc.133.P.tar
dans leur répertoire d’origine$ tar xvfP /sauvegardes/etc.133.P.tar
Se placer au bon endroit. Vérifier le contenu de la sauvegarde. |
Clef | Description |
---|---|
|
Extrait des fichiers de la sauvegarde, compressée ou non. |
Extraire une sauvegarde tar-gzippée (*.tar.gz
) s’effectue avec les clefs xvfz
$ tar xvfz sauvegarde.tar.gz
Extraire une sauvegarde tar-bzippée (*.tar.bz2
) s’effectue avec les clefs xvfj
$ tar xvfj sauvegarde.tar.bz2
Pour extraire ou lister le contenu d’une sauvegarde, il n’est pas nécessaire de mentionner l’algorithme de compression utilisé à la création de la sauvegarde. C’est-à-dire qu’un |
Pour restaurer les fichiers dans leur répertoire d’origine (clé P d’un |
Extraire uniquement un fichier d’une sauvegarde tar
Pour extraire un fichier spécifique d’une sauvegarde tar, spécifiez le nom de ce fichier à la fin de la commande tar xvf
.
$ tar xvf sauvegarde.tar /path/to/file
La commande précédente permet de n’extraire que le fichier /path/to/file
de la sauvegarde sauvegarde.tar
. Ce fichier sera restauré dans le répertoire /path/to/
créé, ou déjà présent, dans le répertoire actif.
$ tar xvfz sauvegarde.tar.gz /path/to/file
$ tar xvfj sauvegarde.tar.bz2 /path/to/file
Extraire un dossier d’une sauvegarde tar
Pour n’extraire qu’un seul répertoire (ses sous-répertoires et fichiers inclus) d’une sauvegarde, spécifiez le nom du répertoire à la fin de la commande tar xvf
.
$ tar xvf sauvegarde.tar /path/to/dir/
Pour extraire plusieurs répertoires, spécifier chacun des noms les uns à la suite des autres :
$ tar xvf sauvegarde.tar /path/to/dir1/ /path/to/dir2/
$ tar xvfz sauvegarde.tar.gz /path/to/dir1/ /path/to/dir2/
$ tar xvfj sauvegarde.tar.bz2 /path/to/dir1/ /path/to/dir2/
Extraire un groupe de fichiers d’une sauvegarde tar grâce à des expressions régulières (regex)
Spécifier une regex pour extraire les fichiers correspondants au motif de sélection spécifié.
Par exemple, pour extraire tous les fichiers avec l’extension .conf
:
$ tar xvf sauvegarde.tar --wildcards '*.conf'
Clefs :
-
--wildcards *.conf correspond aux fichiers avec l’extension
.conf
.
CoPy Input Output - cpio
La commande cpio
permet la sauvegarde sur plusieurs supports successifs sans indiquer d’options.
Il est possible d’extraire tout ou partie d’une sauvegarde.
Il n’y a pas d’option, à l’inverse de la commande tar
, permettant de sauvegarder et de compresser en même temps.
Cela s’effectue donc en deux temps : la sauvegarde puis la compression.
Pour effectuer une sauvegarde avec cpio
, il faut préciser une liste des fichiers à sauvegarder.
Cette liste est fourni avec les commandes find
, ls
ou encore cat
.
-
find
: parcourt une arborescence, récursif ou non ; -
ls
: liste un répertoire, récursif ou non ; -
cat
: lit un fichier contenant les arborescences ou fichiers à sauvegarder.
Il faut une liste simple de noms. |
Créer une sauvegarde avec cpio
cpio
[cde de fichiers |] cpio {-o| --create} [-options] [<fic-liste] [>support]
Exemple :
cpio
.$ find /etc | cpio -ov > /sauvegardes/etc.cpio
$ find /etc | cpio -ovF /sauvegardes/etc.cpio
Le résultat de la commande find
est envoyé en entrée de la commande cpio
par l’intermédiaire d’un pipe (caractère “|”, kbd:[AltGr +6]).
Ici, la commande find /etc
renvoie une liste de fichiers correspondant au contenu du répertoire /etc
(en récursif) à la commande cpio
qui en effectue la sauvegarde.
Ne surtout pas oublier le signe > lors de la sauvegarde ou le F nom_sauvegarde_cpio.
Options | Description |
---|---|
|
Crée une sauvegarde (output). |
|
Affiche le nom des fichiers traités. |
|
Désigne la sauvegarde à modifier (support). |
Sauvegarde vers un support :
$ find /etc | cpio -ov > /dev/rmt0
Le support peut être de plusieurs types :
-
lecteur de bande :
/dev/rmt0
; -
une partition :
/dev/sda5
,/dev/hda5
, etc.
Ajouter à une sauvegarde
cpio
pour ajouter un contenu[cde de fichiers |] cpio {-o| --create} -A [-options] [<fic-liste] {F|>support}
Exemple :
$ find /etc/shadow | cpio -o -AF FicSyst.A.cpio
L’ajout de fichiers n’est possible que sur un support à accès direct.
Option | Description |
---|---|
|
Ajoute un ou plusieurs fichiers à une sauvegarde sur disque. |
|
Désigne la sauvegarde à modifier. |
Compresser une sauvegarde
-
Sauvegarder puis compresser
$ find /etc | cpio –o > etc.A.cpio
$ gzip /sauvegardes/etc.A.cpio
$ ls /sauvegardes/etc.A.cpio*
/sauvegardes/etc.A.cpio.gz
-
Sauvegarder et compresser
$ find /etc | cpio –o | gzip > /sauvegardes/etc.A.cpio.gz
Il n’y a aucune option, à l’inverse de la commande tar
, permettant de sauvegarder et de compresser en même temps.
Cela s’effectue donc en deux temps : la sauvegarde puis la compression.
La syntaxe de la première méthode est plus facile à comprendre et à retenir, car elle s’effectue en deux temps.
Pour la première méthode, le fichier de sauvegarde est automatiquement renommé par l’utilitaire gzip
qui rajoute .gz
à la fin du nom de ce fichier. De même l’utilitaire bzip2
rajoute automatiquement .bz2
.
Lire le contenu d’une sauvegarde
cpio
pour lire le contenu d’une sauvegarde cpiocpio -t [-options] [<fic-liste]
Exemple :
$ cpio -tv </sauvegardes/etc.152.cpio | less
Options | Description |
---|---|
|
Lit une sauvegarde. |
|
Affiche les attributs des fichiers. |
Après avoir réalisé une sauvegarde, il faut lire son contenu pour être certain qu’il n’y a pas eu d’erreur.
De la même façon, avant d’effectuer une restauration, il faut lire le contenu de la sauvegarde qui va être utilisée.
Restaurer une sauvegarde
cpio
pour restaurer une sauvegardecpio {-i| --extract} [-E fichier] [-options] [<support]
Exemple :
$ cpio -iv </sauvegardes/etc.152.cpio | less
Options | Description |
---|---|
|
Restauration complète d’une sauvegarde . |
|
Restaure uniquement les fichiers dont le nom est contenu dans fichier. |
|
Reconstruit l’arborescence manquante. |
|
Remplace tous les fichiers même s’ils existent. |
|
Permet de restaurer une sauvegarde effectuée en mode absolu de manière relative. |
Par défaut, au moment de la restauration, les fichiers sur le disque dont la date de dernière modification est plus récente ou égale à la date de la sauvegarde ne sont pas restaurés (afin d’éviter d’écraser des informations récentes par des informations plus anciennes). L’option u permet au contraire de restaurer d’anciennes versions des fichiers. |
Exemples :
Restauration en absolu sur une arborescence existante
L’option u permet d’écraser des fichiers existants à l’endroit où s’effectue la restauration.
$ cpio –iuvF home.A.cpio
Restauration en relatif d’une sauvegarde absolue
L’option longue no-absolute-filenames permet une restauration en mode relatif. En effet le /
en début de chemin sera enlevé.
$ cpio --no-absolute-filenames -divuF home.A.cpio
La création des répertoires est peut-être nécessaire d’où l’utilisation de l’option |
Utilitaires de compression - décompression
Le fait d’utiliser la compression au moment d’une sauvegarde peut présenter un certain nombre d’inconvénients :
-
Allonge le temps de la sauvegarde ainsi que celui de la restauration.
-
Rend impossible l’ajout de fichiers à cette sauvegarde.
Il vaut donc mieux effectuer une sauvegarde et la compresser qu’effectuer la compression lors de la sauvegarde. |
Compresser avec gzip
La commande gzip
compresse les données.
gzip
gzip [options] [fichier ...]
Exemple :
$ gzip usr.tar
$ ls
usr.tar.gz
Le fichier reçoit l’extension .gz
.
Il conserve les mêmes droits et les mêmes dates de dernier accès et de modification.
Compresser avec bunzip2
La commande bunzip2
compresse également les données.
bzip2
bzip2 [options] [fichier ...]
Exemple :
$ bzip2 usr.cpio
$ ls
usr.cpio.bz2
Le nom du fichier reçoit l’extension .bz2
.
La compression par bzip2
est meilleure que celle par gzip
mais son exécution est plus longue.
Décompresser avec gunzip
La commande gunzip
décompresse les données compressées.
gunzip
gunzip [options] [fichier ...]
Exemple :
$ gunzip usr.tar.gz
$ ls
usr.tar
Le nom du fichier est tronqué par gunzip
et se voit enlever l’extension .gz
.
gunzip
décompresse également les fichiers portant les extensions suivantes :
-
.z
; -
-z
; -
_z
.
Décompresser avec bunzip2
La commande bunzip2
décompresse les données compressées.
bzip2
bzip2 [options] [fichier ...]
Exemple :
$ bunzip2 usr.cpio.bz2
$ ls
usr.cpio
Le nom du fichier est tronqué par bunzip2
et se voit enlever l’extension .bz2
.
bunzip2
décompresse également le fichier portant les extensions suivantes :
-
-bz
; -
.tbz2
; -
tbz
.