Logo LMFA
Those who make peaceful revolution impossible will make violent revolution inevitable. - John F. Kennedy

How to use a computer

Sauvegarde/archivage des données

Quand on considère que l'ordinateur est devenu le principal outil de travail, il faut se protéger contre les pannes de matériel ainsi que les mauvaises manipulations des utilisateurs, donc faire des sauvegardes régulièrement pour pouvoir reconstituer à tout moment le contenu de l'ordinateur.

Même si la capacité des disques durs n'arrête pas de croître, ils ont tendance à se remplir rapidement. Il faut alors archiver certaines données vers d'autres supports avant de faire de la place sur le disque.

Quelles données ?

Comme on ne peut pas sauvegarder tout en permanence, il faut au moins sauvegarder l'essentiel régulièrement.

Les donnéees contenues sur un disque dur n'ont pas toutes le même statut. Il y a des fichiers très volumineux mais assez faciles à récupérer (comme par exemple le système d'exploitation, mais aussi les résultats de certaines simulations numériques pas trop longues si on a le code et les paramètres du calcul), il y a aussi de petits fichiers extrêmement précieux et difficiles voire impossibles à reconstituer (lignes de code, documents rédigés, paramètres de configuration, carnet d'adresses, bookmarks). S'il faut un ou plusieurs DVD et beaucoup de temps pour faire une sauvegarde totale, il suffit de quelques secondes et de quelques disquettes (ou une petite clef USB grand maximum) pour sauvegarder tous les .tex, .cc et autres makefile.

Une bonne manière de procéder est sans doute de faire des sauvegardes complètes de temps en temps, et des sauvegardes des fichiers essentiels beaucoup plus régulièrement.

Sur quels supports ?

Les supports réinscriptibles et donc réutilisables (CD-RW, DVD-RW, clef USB, disque dur externe) sont parfaits pour les sauvegardes de secours effectuées régulièrement. En revanche il vaut mieux utiliser un support indélébile (CD-R, DVD-R) pour archiver des données, c.-à-d. les mettre de côté de manière permanente avant de faire de la place sur le disque dur.

Comment ?

Pour copier des données il y a plein d'outils, des plus simples aux plus sophistiqués.

On peut bien sûr utiliser cp, ou plutôt cp -pR pour conserver les propriétés des fichiers (permissions, propriétaires, dates...). Cela marche. Mais on peut rencontrer des problèmes quand on fait des copies vers des supports externes (disquettes, clefs USB) spécialement formatés pour être compatibles avec d'autres systèmes d'exploitation : dans ce cas, les noms des fichiers peuvent être tronqués, tous les fichiers peuvent devenir exécutables... De la même manière, après gravage sur CD, tous les fichiers sont protégés en écriture. Il est donc difficile de récupérer les données exactement à l'identique.

L'outil tar permet de pallier à toutes ces difficultés en assemblant en un seul fichier tout ce que l'on veut sauvegarder. Cela marche sur tout type de fichier (y compris lien symbolique, device...) et on peut comprimer le résultat (tar -j). C'est ainsi que je fais des sauvegardes de tout le système (partition /) qui ne prennent que quelques centaines de M. Le seul inconvénient de cette méthode, c'est que même pour n'extraire que quelques fichiers il faut parcourir (et donc aussi décomprimer) tout le .tar, cela peut donc être assez long si le .tar est gros. La commande tar est extrêmement polyvalente (faire tar --help pour voir toutes les options possibles) et permet par exemple de ne choisir que les fichiers donnés dans une liste, ou ceux plus récents qu'une certaine date. Finalement n'importe qu'elle politique de sauvegarde doit pouvoir s'implémenter avec tar et quelques scripts bien écrits.

Plus élaboré est l'outil rsnapshot. Il est basé sur rsync et fait grand usage de liens durs (hard links). Ainsi il est possible d'avoir des sauvegardes complètes de tout un système de fichiers à de nombreux instants différents, alors que l'espace occupé n'est que celui d'une seule sauvegarde, plus les différences.

Finalement je préfère yakup ("yet another backup script") qui permet à la fois de faire des archives complètes et des sauvegardes incrémentales à plusieurs niveaux. En mode archivage/sauvegarde, yakup produit des fichiers .tar (éventuellement comprimés) et les découpe en tranches en fonction de la taille du support (CD, DVD, ...). Il y a aussi de nombreuses fonctionalités d'extraction et de restauration de fichiers. C'est très bien fait, et en modifiant les options dans un fichier de configuration on peut l'adapter à tous les besoins. Tout ça avec un simple script bash !

Quand ?

Sauvegarder de grandes quantités de données est un processus long et fastidieux. Aussi faut-il que la procédure soit automatique et préprogrammée, sinon on ne le fait pas assez souvent (ou même pas du tout).

J'ai un ordinateur portable avec un disque dur de 80G. Je fais des sauvegardes sur un vieux disque dur externe de 20G et des archives sur CD (graveur interne) et DVD (graveur externe). (Un disque de 20G est largement suffisant pour contenir les sauvegardes incrémentales et comprimées effectuées plusieurs fois quotidiennement pendant des mois.) Même si je n'éteins jamais mon portable, il est régulièrement en hibernation et le disque dur externe n'est pas souvent branché. La solution qui convient le plus à mes besoins est basée sur quelques scripts lancés automatiquement et (plus ou moins) régulièrement par fcron qui font des sauvegardes incrémentales sur le disque interne. Chaque fois que le disque externe est branché, les dernières sauvegardes y sont transférées par rsync.

Vérification de l'intégrité des données gravées

Une fois qu'un CD ou un DVD est gravé, il faut s'assurer de l'intégrité des données qui viennent d'être gravées. Ce serait bête de constater qu'il y a eu une erreur de gravage après avoir effacé ou perdu les données originales. Pour vérifier le contenu d'un disque, il ne suffit pas de le monter et de vérifier qu'il contient la bonne quantité de données, ni non plus de faire ls -lR /mnt/cdrom et de vérifier que tous les fichiers sont listés. Si l'image ISO n'a été que partiellement gravée, l'arborescence des fichiers est conforme, mais ce sont les données elles-mêmes qui sont défectueuses.

Le seul moyen de s'assurer de l'intégrité du CD, c'est de comparer les images ISO avant et après gravage, par exemple en comparant leurs sommes MD5. Après avoir gravé image.iso sur un disque en /dev/hdc, je fais

md5sum image.iso > image.md5
et
dd if=/dev/hdc | head -c `stat --format=%s image.iso` | md5sum > hdc.md5

Le processus de gravage s'est déroulé correctement si image.md5 et hdc.md5 correspondent. [Sans la commande head -c `stat --format=%s image.iso` cela ne marche pas car quelques bits supplémentaires peuvent être lus]. Certes, cette vérification prend pas mal de temps, mais c'est absolument indispensable si on veut avoir confiance dans la sauvegarde.

Copyleft © all rights reversed  —  http://www.lmfa.fr/perso/Benoit.Pier/computing/backup.php viewed by 44.201.68.86 - 02/10/2022 - 07:42:37