Le programme d'ar­chi­vage tar est basé sur une ancienne méthode de sau­ve­garde des données, qui fait ses preuves encore au­jour­d'hui. Le nom tar est en fait un acronyme et signifie Tape Archiver, c'est-à-dire l'ar­chi­vage sur des lecteurs de bandes. Même si les uti­li­sa­teurs privés les utilisent à peine de nos jours, le programme est toujours l'outil d'ar­chi­vage le plus populaire sur les systèmes Unix. Le programme peut également être utilisé pour créer des sau­ve­gardes ré­gu­lières et in­cré­men­tales d'un serveur. Nous ex­pli­quons comment fonc­tionne tar et quelles commandes sont utilisées pour la sau­ve­garde des données.

Backup Cloud par Acronis
Protégez vos appareils et réduisez les temps d'arrêt
  • Sau­ve­garde au­to­ma­tique et res­tau­ra­tion facile
  • Gestion et pla­ni­fi­ca­tion in­tui­tives
  • Pro­tec­tion contre les menaces basée sur l'IA

Comment fonc­tionne tar ?

Tar est un programme d'ar­chi­vage sous Linux et systèmes connexes. Par défaut, tar n'offre pas de com­pres­sion, ce qui est atypique pour un tel programme. Néanmoins, le programme est très populaire, car son grand avantage est que des ré­per­toires entiers peuvent être fusionnés en un seul fichier. Cette technique est liée à l'his­toire du programme : avec un dérouleur de bande, les données sont trans­fé­rées l'une après l'autre sur une bande mag­né­tique. Ceci explique le stockage sé­quen­tiel et linéaire au format tar. Les nouveaux fichiers sont attachés au dos de l'archive. Un fichier résultant est également appelé tarball, parce que les fichiers sont pra­ti­que­ment « collés ensemble ».

Pour parvenir à la com­pres­sion, tar est souvent utilisé en com­bi­nai­son avec gzip. Les deux pro­grammes se com­plè­tent par­fai­te­ment, car gzip ne peut com­pres­ser qu’un seul fichier à la fois. Par con­sé­quent, tar, et ensuite gzip (ou un autre programme de com­pres­sion), sont gé­né­ra­le­ment utilisés en premier. Il en résulte des fichiers .tar.gz ou .tzip.

Installer tar 

Sous Ubuntu, tar doit être préins­tallé. Si vous utilisez une autre dis­tri­bu­tion Linux ou Unix, installez le programme de cette façon :

sudo apt-get install tar tar-doc

Le pack tar-doc est fa­cul­ta­tif : il contient de la do­cu­men­ta­tion sur le programme d'ar­chi­vage.

Utiliser tar

Si vous souhaitez utiliser tar, il faut taper ceci :

tar Option Datei

Les options de tar sont les suivantes :

Option Des­crip­tion Par­ti­cu­la­rité  
--help Présente toutes les options    
--version Renvoie à la version de tar utilisée    
-c Crée une nouvelle archive (create)  
-d Compare les fichiers dans le système d'ar­chi­vage et le système de fichiers (diff)  
-f Écrit une archive dans le fichier spécifié ou lit les données du fichier spécifié (file) Vous devez toujours saisir cette option en dernier, car toutes les entrées ul­té­rieures sont in­ter­pré­tées comme des fichiers  
-z Compresse ou dé­com­presse l'archive di­rec­te­ment avec gzip gzip doit déjà être installé  
-Z Compresse ou dé­com­presse l'archive di­rec­te­ment avec la com­pres­sion compress doit déjà être installé. Attention à la casse  
-j Compresse ou dé­com­presse l'archive di­rec­te­ment avec bzip2 bzip2 doit déjà être installé  
-J Compresse ou dé­com­presse l'archive di­rec­te­ment avec xz xz doit déjà être installé. Attention à la casse  
-k Empêche les fichiers d'écraser les fichiers existants lors de l'ex­trac­tion de l'archive    
-p Maintient les droits d'accès lors de l'ex­trac­tion    
-r Ajoute un fichier à une archive existante (recreate) Le dossier est joint. Fonc­tionne uni­que­ment avec une archive non com­pres­sée.  
-t Affiche le contenu d'une archive (table)  
-u Ajoute seulement les fichiers qui sont plus récents que leurs versions res­pec­tives dans l'archive    
-v Affiche les étapes d'ar­chi­vage (verbose)  
-vv Affiche des in­for­ma­tions plus dé­tail­lées pendant l'ar­chi­vage (very verbose)  
-w Chaque action doit être confirmée    
-x Extrait les fichiers de l‘archive (extract) les fichiers restent dans l’archive  
-A Attache les fichiers d'une archive existante à une autre Attention à la casse  
-C Indique l'em­pla­ce­ment où les fichiers doivent être extraits Attention à la casse  
-M Crée, visualise ou extraie une archive en plusieurs parties Attention à la casse  
-L Change le support quand le fichier dépasse une certaine taille La taille est spécifiée en kilo-octets. Attention à la casse  
-W Vérifie l’archive une fois qu’elle a été créée Attention à la casse  
-P Archive tous les fichiers du ré­per­toire racine Attention à la casse  
--exclude Exclut les fichiers ou dossiers Spécifié après la commande pour créer avec --exclude=<file/folder>.  
-X Lit une liste de fichiers à exclure Nécessite une liste déjà créée : X <list>.list. Attention à la casse  
-g Crée un journal de tous les ré­per­toires, y compris les sommes de contrôle    

Lors de la création d'ar­chives tar, vous pouvez également créer des ca­rac­tères gé­né­riques avec un as­té­risque. Lors de la création d'une nouvelle archive, spécifiez toujours les options en premier, puis le nom de fichier de l'archive que vous voulez créer, et enfin les fichiers et dossiers que vous voulez inclure. Dans l'exemple suivant, vous créez une archive (-c) à partir de deux fichiers texte, com­pres­sez-la avec gzip (-z) et écrivez-la dans le fichier archiv.tar.gz (-f) :

tar -czf archiv.tar.gz exemple_1.txt exemple_2.txt

Si vous souhaitez combiner tous les fichiers texte du ré­per­toire dans une archive, utilisez un joker approprié :

tar -cf text_archiv.tar *.txt

Vous pouvez également combiner des ré­per­toires complets et leurs sous-ré­per­toires en une seule archive. Dans l'exemple suivant, /registre1, y compris tous les sous-ré­per­toires et les fichiers qu'il contient, n'est archivé que pour le sous-ré­per­toire /registre1/sous­re­gistre_x :

tar -cf archiv.tar --exclude="/registre1/sousregistre_x " / registre_1

Dans l'exemple suivant, extrayez (-x) l'archive com­pres­sée (-z) que nous avons créée dans le premier exemple vers un autre ré­per­toire (-C) :

Pour ajouter un autre fichier à une archive (qui doit être dé­com­pres­sée), entrez la commande suivante, par exemple :

tar -rf archiv.tar exemple_extra.txt

Comment fonc­tionne une sau­ve­garde avec tar ?

Les web­mas­ters aiment utiliser tar pour les sau­ve­gardes : la structure des ré­per­toires est conservée et l’étendue des fonctions du programme permet en outre des réglages précis, comme le montrent les nom­breuses options. Dans ce qui suit, nous ex­pli­que­rons comment créer une sau­ve­garde complète avec tar, et comment créer des sau­ve­gardes in­cré­men­tales avec le programme.

Créer une sau­ve­garde avec tar sim­ple­ment

Il est logique pour votre stratégie de sau­ve­garde de créer un script de sau­ve­garde pour l'ar­chi­vage de votre système au lieu de sim­ple­ment créer des archives ma­nuel­le­ment. Cela vous permet d'ar­chi­ver, de com­pres­ser et de trans­fé­rer au­to­ma­ti­que­ment plusieurs ré­per­toires vers un stockage de données externe. Il est important que vous ayez accès à tout moment aux ré­per­toires cor­res­pon­dants. Créez d'abord un ré­per­toire bin dans votre ré­per­toire personnel (si vous n'en avez pas déjà un) et créez le script à cet endroit. Bien entendu, vous devez adapter l’exemple de script suivant à vos besoins et à la structure des ré­per­toires :

#!/bin/bash
    DATE=$(date +%Y-%m-%d-%H%M%S)
    BACKUP_DIR="/registrecible/backup"
    SOURCE="$HOME/registresource"
    tar -cvzpf $BACKUP_DIR/backup-$DATE.tar.gz $SOURCE

Pour vous aider à com­prendre exac­te­ment ce que fait ce script, nous allons l’expliquer ligne par ligne :

  1. La première ligne est ce qu'on appelle le shebang, qui indique au système d'ex­ploi­ta­tion quel programme d'in­ter­pré­ta­tion utiliser. Dans ce cas, on utilise bash.
  2. Chaque sau­ve­garde avec tar est horodatée. Ceci est important pour que plusieurs sau­ve­gardes puissent être séparées en toute sécurité. Par exemple, on donne à la variable le format suivant : année-mois-jour-heure-heure-minute-seconde, par exemple 2017-09-07-152833.
  3. Il s’agit ensuite de spécifier le ré­per­toire dans lequel la sau­ve­garde sera créée. Ne terminez pas le dernier sous-ré­per­toire par "/".
  4. Dans cette ligne, vous spécifiez les ré­per­toires que vous voulez inclure dans l'archive. Ici, vous pouvez aussi lister plusieurs ré­per­toires séparés par un seul espace : SOURCE="$HOME/source directory1 $HOME/source directory2 ". Ne notez pas non plus "/" à la fin des ré­per­toires à ce stade. Dans tous les cas, veillez à insérer un espace avant le guillemet de clôture.
  5. La dernière ligne du script se termine avec la commande tar :
    • -cvzpf crée une archive (-c), les étapes sont affichées (-v), il est compressé avec gzip (-zip), les droits d'accès sont maintenus (-p) et tout est sorti dans le fichier suivant (-f). -v et -p en par­ti­cu­lier sont op­tion­nels, et il est possible d'ajouter d'autres options pour modifier votre sau­ve­garde.
    • $BACKUP_DIR/backup-$DATE.tar.gz nomme le ré­per­toire ($BACKUP_DIR) et le fichier dans lequel la sau­ve­garde doit être en­re­gis­trée. Dans notre exemple, nous ouvrons cette sau­ve­garde, suivie de l'ho­ro­da­tage en cours. Le nom du fichier se termine par la spé­ci­fi­ca­tion du format dans lequel le fichier est créé. Si vous souhaitez utiliser une com­pres­sion dif­fé­rente, vous devez veiller à changer à la fois le format de fichier et l’option dans la commande.
    • Enfin, utilisez la variable $SOURCE pour indiquer à tar ce qu'il faut archiver. Il est également possible d'uti­li­ser --exclude ou -X pour exclure des ré­per­toires ou des fichiers qui ne devraient pas être inclus dans la sau­ve­garde.
Conseil

Pour Linux et Unix, l’extension que l’on donne au fichier script n'a pas d'im­por­tance. Les systèmes lisent le type de fichier en comparant la structure du fichier avec un fichier magic. Il s'agit d'une base de données qui est gé­né­ra­le­ment située à l’em­pla­ce­ment /etc/magic. Cependant, il est courant de spécifier des ex­ten­sions de fichiers pour faciliter le suivi de ces derniers en tant qu'uti­li­sa­teur.

Sau­ve­gar­dez ensuite le fichier nommé backup dans le ré­per­toire bin et ajoutez son chemin d'accès à la variable PATH :

PATH=$PATH:$HOME/bin

Vous devez toujours rendre exé­cu­table le script de sau­ve­garde que vous venez de créer :

chmod u+x $HOME/bin/backup

Ceci rend le fichier exé­cu­table uni­que­ment pour vous-même (u). Vous pouvez également attribuer les droits à un groupe (g), à d'autres (o) ou à tous (a). Main­te­nant que vous avez terminé, vous pouvez exécuter le script :

sudo backup

Si vous souhaitez restaurer la sau­ve­garde, c’est-à-dire extraire l’archive, une seule commande suffit :

tar -xzf backup.tar.gz -C /

Le script crée une sau­ve­garde complète. Cependant, ce n'est pas toujours le bon choix lors de la sau­ve­garde d'un serveur complet. Par con­sé­quent, vous devriez con­si­dé­rer si une sau­ve­garde in­cré­men­tale avec tar n'est pas plus utile pour vos besoins.

Note

Lors de la création d'une archive avec des chemins absolus, tar retourne le message : "tar : Remove leading "/" from element names". Il ne s'agit pas d'un message d'erreur, mais d'une pré­cau­tion de sécurité lors de la res­tau­ra­tion : tar fait de /home/sous­re­gistre le chemin home/ sous­re­gistre. Si vous n'êtes pas dans le ré­per­toire racine lors de l'ex­trac­tion de l'archive, tar crée une nouvelle structure de ré­per­toire, par exemple : /home/sous­re­gistre/home/home/sous­re­gistre. Cela réduit la pro­ba­bi­lité que vous écrasiez ac­ci­den­tel­le­ment l'en­semble de votre système. Rappelez-vous en effet qu’Unix ne prévient pas lors de l’écra­se­ment. Par con­sé­quent, si vous souhaitez réel­le­ment remplacer le contenu existant, vous devez d'abord naviguer jusqu'au ré­per­toire racine. Vous pouvez con­tour­ner ce problème avec l’option –P.

Qu’est-ce qu’une sau­ve­garde in­cré­men­tale ?

Les web­mas­ters font des sau­ve­gardes ré­gu­lières pour éviter la perte de données. Si le système actuel ne fonc­tionne pas, est compromis ou supprimé, une version de travail peut être installée à partir de la sau­ve­garde. Plus vous réa­li­se­rez ré­gu­liè­re­ment des sau­ve­gardes, moins vous aurez de pertes de données en cas d'urgence. Si vous réalisez une sau­ve­garde complète à chaque fois, c'est-à-dire archivez toutes les données du système, cela prend beaucoup de temps d'une part, et il est d'autre part né­ces­saire de disposer d’un stockage important. À la place, vous pouvez compter sur des sau­ve­gardes in­cré­men­tales.

Une sau­ve­garde in­cré­men­tale nécessite toujours un stockage complet. Vous devez d'abord archiver com­plè­te­ment le système (ou au moins la partie que vous voulez sau­ve­gar­der). Ensuite, seuls les fichiers nouveaux ou modifiés sont en­re­gis­trés avec une sau­ve­garde in­cré­men­tale. Ceci permet de réduire con­si­dé­ra­ble­ment le volume de données, mais nécessite plus d’efforts pour une ré­cu­pé­ra­tion. Ainsi, lorsque vous restaurez la sau­ve­garde, vous avez besoin de la dernière sau­ve­garde complète et de toutes les sau­ve­gardes in­cré­men­tielles que vous avez ef­fec­tuées depuis. Si vous avez perdu un fichier (ce qui est moins probable au­jour­d'hui qu'au moment des bandes mag­né­tiques), la sau­ve­garde est in­com­plète.

Créer une sau­ve­garde in­cré­men­tale avec tar

Avec tar, vous pouvez créer des sau­ve­gardes in­cré­men­tales ré­gu­lières. Ici aussi, vous écrivez votre propre script de sau­ve­garde. Par exemple, vous pouvez spécifier qu'une sau­ve­garde complète est créée une fois par mois, puis une sau­ve­garde in­cré­men­tale est créée quo­ti­dien­ne­ment. Le script suivant déplace aussi ré­gu­liè­re­ment les anciennes sau­ve­gardes vers des dossiers triés par date. En plus de tar, vous avez aussi besoin de cron. Ce démon (un programme qui s'exécute en arrière-plan) permet l'exé­cu­tion tem­po­relle d'autres processus. Cron est par défaut inclus dans Ubuntu. Tout d'abord, ouvrez à nouveau un éditeur de texte et créez votre script :

#!/bin/bash
BACKUP_DIR="/registrecible/backup"
ROTATE_DIR="/registrecible/backup/rotate"
TIMESTAMP="timestamp.dat"
SOURCE="$HOME/registresource"
DATE=$(date +%Y-%m-%d-%H%M%S)
EXCLUDE="--exclude=/mnt/* --exclude=/proc/* --exclude=/sys/* --exclude=/tmp/*"
cd /
mkdir -p ${BACKUP_DIR}
set -- ${BACKUP_DIR}/backup-??.tar.gz
lastname=${!#}
backupnr=${lastname##*backup-}
backupnr=${backupnr%%.*}
backupnr=${backupnr//\?/0}
backupnr=$[10#${backupnr}]
if [ "$[backupnr++]" -ge 30 ]; then
mkdir -p ${ROTATE_DIR}/${DATE}
mv ${BACKUP_DIR}/b* ${ROTATE_DIR}/${DATE}
mv ${BACKUP_DIR}/t* ${ROTATE_DIR}/${DATE}
backupnr=1
fi
backupnr=0${backupnr}
backupnr=${backupnr: -2}
filename=backup-${backupnr}.tar.gz
tar -cpzf ${BACKUP_DIR}/${filename} -g ${BACKUP_DIR}/${TIMESTAMP} -X $EXCLUDE ${SOURCE]

Voici, pas à pas, les in­di­ca­tions pour im­plé­men­ter ce script de sau­ve­garde :

  • Commencez par définir à nouveau l'in­ter­pré­teur.
     
  • Dé­fi­nis­sez ensuite les variables. Un ré­per­toire pour la rotation des sau­ve­gardes (une sorte d'archive des sau­ve­gardes) et un fichier d’ho­ro­da­tage (timestamp) ont été ajoutés.
     
  • Dans cet exemple, nous montrons qu’il n'est pas toujours logique d’inclure tous les ré­per­toires dans la sau­ve­garde. Dans ce cas, nous avons exclu le contenu des dossiers (et non les dossiers eux-mêmes, d'où le "*") mnt, proc, sys et tmp. C’est parce que les données de ces ré­per­toires sont tem­po­raires ou sont créées à chaque nouveau re­dé­mar­rage du système.
     
  • Pour que tous les chemins soient in­ter­pré­tés cor­rec­te­ment, le script change dans le ré­per­toire racine avec cd /.
     
  • Avec mkdir, vous créez le ré­per­toire de sau­ve­garde s’il n’existe pas déjà.
     
  • Toutes les variables sont dé­chif­frées. Puisque vous voulez numéroter vos sau­ve­gardes de manière con­sé­cu­tive, le bloc de code détermine le numéro de la dernière sau­ve­garde. Ceci se fait en sup­pri­mant les autres parties du nom du fichier.
     
  • Il n’est possible de faire que 30 sau­ve­gardes à la fois, après quoi le script déplace tous les fichiers d’archive dans le dossier de rotation. Il est d’abord créé, puis tous les fichiers com­men­çant par b et t sont déplacés dans le nouveau dossier avec mv. La li­mi­ta­tion des lettres s’explique par le fait que seuls les fichiers ainsi marqués avec lui devraient de toute façon se trouver dans le dossier, d’où les balises backup et timestamp. Enfin, le script réi­ni­tia­lise le numéro de sau­ve­garde à 1, et si votre script détecte qu’aucune des 30 sau­ve­gardes n’a été créée, il augmente sim­ple­ment le numéro de fichier de 1 (++).
     
  • Ensuite, le script annule vir­tuel­le­ment ce qu’il a fait au début : les commandes per­met­tent de s'assurer que le nom du fichier est à nouveau complet, et désormais porteur du nouveau numéro.
     
  • Enfin, le script exécute la commande tar pro­pre­ment dite : par rapport à la commande de la simple sau­ve­garde complète, une autre option a été ajoutée. Avec -g, la sau­ve­garde in­cré­men­tale est possible. Pour ce faire, tar lit l'ho­ro­da­tage de chaque fichier, le compare avec les données en­re­gis­trées dans timestamp.dat afin qu'il puisse décider quels chan­ge­ments se sont produits depuis la dernière sau­ve­garde. Seuls ces documents font partie des nouvelles archives.
Note

Le script déplace les fichiers de sau­ve­garde dans un nouveau dossier d'ar­chives chaque mois (avec archivage quotidien) de sorte que le ré­per­toire de sau­ve­garde ne contient que les données les plus récentes. Cependant, il n’y a pas de fonction intégrée qui limite le nombre de dossiers d'ar­chives. Cela signifie que vous devez les supprimer ma­nuel­le­ment.

Pour compléter le script de création d'une sau­ve­garde in­cré­men­tale avec tar, il faut en­re­gis­trer le fichier comme backup dans le ré­per­toire bin. Là encore, vous devez exporter le chemin d'accès et rendre le script exé­cu­table :

PATH=$PATH:$HOME/bin
chmod u+x $HOME/bin/backup

En théorie, vous pouvez main­te­nant démarrer votre script de sau­ve­garde avec sudo backup. L'idée derrière la sau­ve­garde in­cré­men­tale, toutefois, est que le processus est au­to­ma­tisé et exécuté quo­ti­dien­ne­ment. Pour ce faire, utilisez cron et modifiez ce que l'on appelle crontab. C'est la table que cron utilise pour effectuer des tâches. Elle comprend six champs :

Minutes (0-59) Heures (0-23) Jours (1-31) Mois (1-12) Jours de la semaine (0-7) Mission

Dans les champs, vous pouvez saisir des nombres selon la plage de valeurs (entre pa­ren­thèses) ou un as­té­risque (*). Ce dernier signifie toutes les valeurs possibles. La colonne jour de la semaine est une ca­rac­té­ris­tique spéciale. Ceci vous permet de spécifier qu'un ordre est exécuté tous les lundis (1) ou seulement les jours ouvrables (1-5), par exemple. Le dimanche peut être spécifié par deux valeurs dif­fé­rentes : 0 et 7 se réfèrent au dimanche, puisque pour certaines personnes, la semaine commence par ce jour et pour d'autres, elle se termine par ce jour.

Dans la ligne de commande, ouvrez le mode éditeur de cron avec :

sudo crontab –e

Entrez ensuite la ligne de code ci-dessous :

30 7 * * * /home/bin/backup

Cela signifie que la sau­ve­garde est effectuée tous les jours (et tous les mois, quel que soit le jour de la semaine) à 7h30. Sau­ve­gar­dez vos mo­di­fi­ca­tions, puis votre sau­ve­garde in­cré­men­tale quo­ti­dienne est prête à démarrer.

Note

Cron ne fonc­tionne que lorsque votre système est en cours d'exé­cu­tion. Ceci devrait être le cas avec tous les serveurs Web. Cependant, si vous prévoyez d'uti­li­ser le script pour sau­ve­gar­der votre PC ou votre or­di­na­teur portable, vous devez garantir que les appareils fonc­tion­ne­ront tous les jours à 7h30 du matin. Si l’appareil n’est pas allumé, la sau­ve­garde ne peut tout sim­ple­ment pas avoir lieu. Une option pour con­tour­ner ce problème est offerte par anacron. Ce programme déplace l'exé­cu­tion planifiée d'un système qui ne fonc­tionne pas à un moment où l'ap­pa­reil est à nouveau actif.

Res­tau­ra­tion d’un système à partir d’une sau­ve­garde

C’est évi­dem­ment une situation que l’on cherche à éviter, mais il peut se produire une urgence qui nécessite la res­tau­ra­tion de votre système. Avec tar, c’est aussi re­la­ti­ve­ment facile, et aucun script sup­plé­men­taire n’est né­ces­saire. Cependant, il n’est pas possible de procéder à une seule commande comme une simple sau­ve­garde complète : la nature même de la sau­ve­garde in­cré­men­tale implique que plusieurs fichiers doivent être dé­com­pres­sés. Entrez ces lignes de commande dans la console :

BACKUP_DIR=/registrecible/backup
cd /
    for archiv in ${BACKUP_DIR}/backup-*.tar.gz; do
    tar -xpzf $archiv -C /
    done
Note

Lors de la res­tau­ra­tion du système à partir de la sau­ve­garde, tous les ré­per­toires, donc éven­tuel­le­ment aussi les fichiers im­por­tants, sont écrasés.

Pour éviter d'avoir à extraire chaque fichier d'archive in­di­vi­duel­le­ment, utilisez une boucle for :

  1. En premier lieu, commencez par définir le ré­per­toire dans lequel se trouvera la sau­ve­garde.
  2. cd / bascule vers le ré­per­toire racine pour s’assurer que l’archive est extraite à l'em­pla­ce­ment correct.
  3. Lancez main­te­nant une boucle for : cette commande répète toutes les actions à faire jusqu’à ce que toutes les pos­si­bi­li­tés aient été com­plé­tées. Pour spécifier la commande, spécifiez le chemin de vos sau­ve­gardes avec un as­té­risque comme wildcard, car vous voulez dé­com­pres­ser tous les fichiers d'archive dans ce ré­per­toire.
  4. Spécifiez la commande tar comme suit : il faut extraire (-x), tout en con­ser­vant les droits d'accès (-p), et dé­com­pres­ser (-z) l'archive (-f $archiv) dans le ré­per­toire racine (-C /).
  5.  Done permet de terminer la boucle.

Comme vous avez numéroté les archives à la suite lors de leur création, les sau­ve­gardes sont res­tau­rées les unes après les autres, en com­men­çant par les plus anciennes. Ceci est important, car les archives créées après la sau­ve­garde complète con­tien­nent des versions plus récentes des fichiers. Cela signifie que pendant la boucle, l’ancienne version est d’abord extraite puis, pendant l’exécution suivante, écrasée par une version plus récente. À la fin, vous avez écrasé tout le système avec la sau­ve­garde et restauré la dernière version archivée de chaque fichier.

C'est le véritable but d'une sau­ve­garde in­cré­men­tale : la res­tau­ra­tion complète du système. Avec un petit détour, il est même possible d'en­re­gis­trer un seul fichier et de récupérer la dernière version archivée. Pour ce faire, procédez en deux étapes :

BACKUP_DIR=/registrecible/backup
    ls -l ${BACKUP_DIR}
    for archiv in ${BACKUP_DIR}/backup-*tar.gz; do
    tar -tzf $archiv | grep searched-file;
    done

Dans cette première étape, vous utilisez également une boucle, qui est utilisée pour la recherche et non pour l'ex­trac­tion :

  1. Re­dé­fi­nis­sez un ré­per­toire de sau­ve­garde.
  2. Utilisez la commande ls pour afficher tous les fichiers et dossiers du ré­per­toire de sau­ve­garde. L'option -l fournit des in­for­ma­tions dé­tail­lées.
  3. Ouvrez une boucle comme lors de la res­tau­ra­tion de l'archive complète.
  4. Le chan­ge­ment important se trouve dans les options de la commande tar : au lieu de créer une archive (c) ou d'ex­traire (x), affichez le contenu des archives (t). Cependant, comme vous ne voulez pas re­cher­cher le fichier vous-même, trans­fé­rez la sortie avec un tube (ligne verticale) à la commande grep. Cette fonction permet de re­cher­cher le fichier souhaité dans la sortie (le contenu des archives).
  5. Fermez la boucle.

Main­te­nant, le terminal vous montrera le fichier que vous re­cher­chez, et peut-être même plusieurs fois si vous l'avez édité ré­gu­liè­re­ment et qu'il apparaît dans chaque sau­ve­garde in­cré­men­tale. Ensuite, reprenez le chemin d'accès au fichier et créez une autre boucle qui res­tau­rera la dernière version sau­ve­gar­dée :

for archiv in ${BACKUP_DIR}/backup-*.tar.gz; do
    tar –xzf $archiv -C /registrecible/backup/searched-file
    done

Main­te­nant, le fichier est restauré à son em­pla­ce­ment d'origine et écrase une éven­tuelle version plus récente.

Aller au menu principal