❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraĂźchir la page.

Sauvegardes (encore !) et restitution

Ben oui, ce sujet m’intĂ©resse car je suis motivĂ© par la prĂ©servation de ce que je considĂšre comme prĂ©cieux dans les donnĂ©es que je crĂ©e ou rĂ©cupĂšre sur mon PC. En tant que bidouilleur j’ai moi aussi crĂ©Ă© un outil pour cela. Il correspond Ă  mon besoin et j'en suis satisfait. Voici mon cheminement.

J’ai fait une recherche sur LinuxFR.org avec le mot sauvegarde et j’ai trouvĂ© des articles et des rĂ©actions toutes trĂšs intĂ©ressantes. Les besoins, les solutions, les mises en Ɠuvre sont trĂšs variĂ©es. Chacun choisit ou crĂ©e selon son ressenti et finit par ĂȘtre satisfait de ce qu’il fait. Chacun partage son expĂ©rience, en espĂ©rant qu’elle profitera Ă  d’autres. À mon tour.

Le meilleur outil de sauvegarde est celui qu’on utilise et en lequel on a confiance.

tape-drive

Je te propose un jeu : demande Ă  un utilisateur de PC, smartphone
 si la destruction inopinĂ©e de son appareil entraĂźnerait des pertes de fichiers irrĂ©mĂ©diables qui pourraient l’affecter (photos familiales, documents
). Demande ensuite s’il fait des copies et/ou des sauvegardes. Pour beaucoup, tu seras cataloguĂ© comme vilain geek alarmiste. Il y a du travail de prise de conscience !

    Sommaire

    Notion de sauvegarde

    Une analyse trĂšs courte de la fonction sauvegarde serait « ranger quelque part des donnĂ©es qui permettront de restituer ce que je considĂšre comme prĂ©cieux Â».
    Les mots clĂ©s sont « ranger Â» « quelque part Â» « donnĂ©es Â» « restituer Â» « prĂ©cieux Â».
    On a deux verbes « ranger Â» « restituer Â», deux localisations de donnĂ©es « quelque part Â» « ce qui est prĂ©cieux Â», et une notion de filtrage dans le mot « prĂ©cieux Â».

    Un autre point de vue serait de dire qu’une information prĂ©cieuse doit rĂ©sider en deux endroits, pour que la dĂ©faillance de l’un puisse ĂȘtre compensĂ©e par l’autre. Une des consĂ©quences consiste Ă  doubler les archivages : la libĂ©ration des espaces prĂ©cieux par la suppression de donnĂ©es inactives doit ĂȘtre prĂ©cĂ©dĂ©e de l’archivage des donnĂ©es Ă  supprimer vers deux supports distincts. Une autre consĂ©quence est d’utiliser un mĂ©dia spĂ©cifique pour recevoir les sauvegardes (autre que celui oĂč sont les donnĂ©es Ă  sauver).

    La dĂ©faillance peut ĂȘtre de plusieurs origines : matĂ©rielle, corruption du mĂ©dia, utilisateur qui efface/Ă©crase


    Que demande-t-on Ă  un outil de sauvegarde ?

    Si je rédigeais un cahier des charges pour un outil de sauvegarde, je ferais les listes suivantes. Je suis dans mon contexte de PC isolé, ayant accÚs éventuellement à un petit serveur sur le réseau local.

    Fonctionnalités de base :

    • sauver juste ce qui a Ă©tĂ© modifiĂ© depuis la sauvegarde prĂ©cĂ©dente => opĂ©ration rapide,
    • compression des fichiers archives => prend peu de place sur l’espace de sauvegarde,
    • facile Ă  lancer et rapide en exĂ©cution => sera lancĂ© souvent => sĂ©curisation accrue,
    • filtrage => possibilitĂ© de conserver dans les espaces sauvĂ©s des fichiers qui n’encombreront pas les sauvegardes,
    • robuste => confiance.

    Fonctionnalités nécessaires :

    • vĂ©rification de l’intĂ©gritĂ© des fichiers archives engendrĂ©s,
    • restitution facile malgrĂ© le grand nombre de fichiers archives Ă  exploiter,
    • restitution qui permette de rĂ©gĂ©nĂ©rer (ailleurs) l’espace sauvegardĂ© dans le mĂȘme Ă©tat que ce qu’il Ă©tait au moment d’une des opĂ©rations de sauvegarde (accĂšs aux Ă©tats antĂ©rieurs),
    • recherche/extraction de fichiers dans le grand nombre de fichiers archives obtenus,
    • traçage pour vĂ©rifier le bon dĂ©roulement des opĂ©rations.

    On peut ajouter aussi :

    • algorithme ouvert et source fourni,
    • qui s’accommode de tous types de support de stockage,
    • qui utilise des formats standard,
    • qui a toutes ses fonctionnalitĂ©s accessibles en ligne de commande.

    Le dernier point permettra d’utiliser l’outil comme une commande classique. On pourra le lancer dans un script bash qui adaptera l’usage au besoin spĂ©cifique du moment (ajout de montage/dĂ©montage du mĂ©dia de sauvegarde, rsync rĂ©seau des fichiers gĂ©nĂ©rĂ©s
). C’est une commoditĂ© qui me manque quand je suis coincĂ© dans l’usage d’un outil cliquodrome.

    Un script shell écrit sur un coin de table (au début)

    J’ai rencontrĂ© le shell lors de mon premier contact avec Unix, en 1987. Au dĂ©but j’ai eu le sentiment de rĂ©gresser par rapport Ă  la syntaxe COM des Vax/VMS. Depuis, j’ai appris Ă  apprĂ©cier le bash, bien plus commode que ses ancĂȘtres sh csh. Une des philosophies du shell est de combiner des commandes simples et robustes pour en faire une rĂ©ponse Ă  un besoin. Par exemple ls | wc -l renvoie le nombre de fichiers/rĂ©pertoires du rĂ©pertoire courant. Toutefois, il y a des cas sournois oĂč le rĂ©sultat est faux, on verra plus loin ce que je qualifie de piĂšges.

    Avec les pipelines, les redirections, les variables, les traitements de chaĂźnes de caractĂšres, et tout le reste, on peut construire Ă  l’infini des sĂ©quences d’opĂ©rations qui s’appuient sur des commandes simples Ă  lancer mais puissantes (genre outil de compression, outil de parcours d’une arborescence de fichiers
). Beaucoup des fonctionnalitĂ©s du systĂšme GNU sont construites comme cela. Un bidouilleur systĂšme ne peut pas ignorer le bash. En plus, emacs permet un accĂšs trĂšs commode aux man. Je n’ai jamais eu de projet ou de besoin qui me pousse Ă  maĂźtriser Perl ou Python. Je pense qu’ils sont encore plus puissants que bash.

    Comme j’aime bien bidouiller, Ă  la fin du 20e siĂšcle j’avais dans l’idĂ©e de faire un outil de sauvegarde basique qui s’appuie sur un pipeline : une commande find qui sĂ©lectionne les fichiers modifiĂ©s, tar pour les copier et gzip pour compresser. J’ai fait divers essais. En 2021, je m’y suis mis sĂ©rieusement et j’ai dĂ©couvert beaucoup de subtilitĂ©s du bash.

    Un des problĂšmes des sauvegardes incrĂ©mentales est de deviner si un fichier doit ĂȘtre sauvĂ©, sans avoir Ă  comparer son contenu avec la version sauvĂ©e derniĂšrement (ça coĂ»te trop cher). Il faut se baser sur les paramĂštres du systĂšme de fichiers. Il faut bien choisir ces paramĂštres (on surveille leur changement), au risque de rater certains fichiers ou alors d’en sĂ©lectionner trop. Je me suis arrĂȘtĂ© sur la date de modification du statut et le numĂ©ro d'inode.

    Scripts bash tzsauv

    Je pense ĂȘtre arrivĂ© au bout des spĂ©cifications avec l’outil tzsauv que j’ai Ă©crit en bash. Il est disponible sur mon site.
    Je m’en sers quotidiennement. Selon les jours, j’envoie les fichiers archives sur le 2ᔉ disque ou sur clĂ© USB. Je fais aussi un miroir du rĂ©pertoire disque des fichiers archives vers GoogleDrive (ceinture et bretelles). Je fais aussi une sauvegarde Ă  longue pĂ©riodicitĂ© (six mois) sur une clĂ© USB dĂ©diĂ©e (double ceinture).

    Les opĂ©rations principales utilisent les commandes standard find sed tar zstd md5sum, le bash sert Ă  enchaĂźner tout ça et sert aux dialogues. Pour installer, il suffit de copier deux scripts sur le mĂ©dia de sauvegarde (SauverTZ_ProjXY_01.bash tzsauv.bash, total 96k, ajouter Ă©ventuellement l’aide Alire.txt), et modifier quelques paramĂštres dans l’un des scripts (le script lanceur SauverTZ_*.bash). Le lancement peut se faire en ligne de commande ou via l’explorateur de fichiers par Clic-Droit/Actions/LancerDansKonsole.

    L’interprĂ©tation du bash prend des ressources, mais je pense qu’elles sont nĂ©gligeables par rapport Ă  celles prises par les E/S et les commandes standard citĂ©es ci-dessus. Le compresseur zstd semble ĂȘtre trĂšs performant, en temps et en taux de compression. De plus, il est multithread, ce qui lui permet de tirer avantage des processeurs actuels qui gagnent en puissance en augmentant le nombre de cƓurs. Le paramĂ©trage de tzsauv permet de choisir parmi plusieurs formats d’archives.

    Pour la sauvegarde vers le 2e disque, j’ai copiĂ© sur le Bureau le lanceur de Konsole, puis j’ai renommĂ© la copie et dans ses PropriĂ©tĂ©s/Application j’ai modifiĂ© l’argument (-e ./SauverTZ_ProjXY_01.bash) et le dossier de travail. Du coup, avec juste un double-clic je lance la sauvegarde en mode interactif (-> question « â€Š TOTALE o/n/q ? Â»). Elle est pas belle la vie ?

    Subtilités et piÚges

    Je fais rĂ©guliĂšrement des petits programmes bash pour explorer des dĂ©tails de fonctionnement soit du bash, soit des commandes. Les man ont beau ĂȘtre dĂ©taillĂ©s, ils ne peuvent pas tout dire. Pour un bug de tar je suis allĂ© jusqu’à consulter le source C, le corriger par plaisir et vĂ©rifier que c’était OK. La remontĂ©e du bug n’a pas abouti (personne n’utilise l’option -u de tar ! C’est de la tĂ©trapilectomie, je suis xyloglotte mais pas encore alopĂ©cique).

    Si tu lances sous bash ls | wc -l puis touch -- 'a'$'\n''b' puis de nouveau ls | wc -l, le nombre renvoyĂ© aura augmentĂ© de deux alors que tu n’as ajoutĂ© qu’un seul fichier. C’est normal car le nom du fichier ajoutĂ© tient sur deux lignes ! Solution : ls -q | wc -l ou ls --zero | tr '\n\0' '\0\n' | wc -l. Pour voir le rĂ©sultat de ls -q envoyĂ© Ă  wc -l via le pipeline, entrer ls -q | cat.

    Les deux seuls caractĂšres interdits dans les noms de fichiers/rĂ©pertoires *unix* sont « / Â» et « \0 Â» (Ă  mĂ©diter).

    Je t’invite Ă  crĂ©er sous bash un fichier piĂšge par echo "abcd" > $' xyza\x01b\x02c\x03d\x04e\x05f\x06g\x07h\x08i\x09j\x0ak\x0bl\x0cm\x0dn\x0eo\x0fESC\x1bDEL\x7f\x80\xff\x26\x22\x27\x60\x5c SPC ', Ă  le sauver avec ton outil, puis Ă  le restituer. Tu verras si ça passe et si le nombre de fichiers est correct. Pour le dĂ©truire rm -i *xyza* devrait convenir.
    Essaye aussi avec un sous-répertoire mkdir $' xyzp\x01b\x02c\x03d\x04e\x05f\x06g\x07h\x08i\x09j\x0ak\x0bl\x0cm\x0dn\x0eo\x0fESC\x1bDEL\x7f\x80\xff\x26\x22\x27\x60\x5c SPC '. Mets-y un fichier, puis fais une sauvegarde totale, modifie le fichier et fais une incrémentale. Ensuite fais un essai de restitution. Joue aussi à modifier le nom du répertoire parent du sous-répertoire piÚge.
    Pour jouer avec ces choses dangereuses, je te conseille de faire une zone Ă  part, ne fais pas courir de risque Ă  ta production. Sur ma Mageia9.2-official, le navigateur Dolphin n’arrive pas Ă  dĂ©truire le rĂ©pertoire piĂšge. Je passe par la ligne de commande.

    J’ai rencontrĂ© tout plein de piĂšges et j’en ai imaginĂ© d’autres : un fichier de nom -f, un rĂ©pertoire de nom -, comment dĂ©truire le fichier ? Comment faire un cd vers le rĂ©pertoire ?
    Solutions : rm -f -- -f et cd -- -/ et si le nom du rĂ©pertoire est dans la variable var cd -- "${var%/}/" (prĂ©voir le cas oĂč var="/").
    J’ai dĂ©couvert que zstd en mode filtre lancĂ© par tar, se met en erreur s’il existe un sous-rĂ©pertoire de nom - dans le rĂ©pertoire courant (c’est trĂšs particulier, en effet). L’examen des sources de tar et de zstd m’a confirmĂ© le problĂšme, la solution m’a parue simple (inverser l’ordre de deux tests dans le source de zstd) mais la remontĂ©e de bug n’a pas abouti. Ce n’est pas grave, je sais maintenant qu’il ne faut pas utiliser tar ... --zstd ..., et je mets plutĂŽt zstd -c[d] dans un pipeline.

    J’en raconte un maximum dans le fichier notes01.bash. Toute cette expĂ©rience me permet de crĂ©er des scripts bash robustes.

    Conclusion

    Ton outil de sauvegarde est le meilleur, car il te convient.
    Fais-toi une idée claire

    • de tous tes espaces contenant des fichiers prĂ©cieux Ă  tes yeux,
    • de tous tes espaces de sauvegarde,
    • des mĂ©canismes de sauvegarde et de restitution.

    Cela participe Ă  la confiance.

    N’oublie pas de faire de temps en temps un contrĂŽle d’intĂ©gritĂ© des archives et un exercice de restitution. C’est un peu de travail, juste pour vĂ©rifier qu’une mise Ă  jour, ou une donnĂ©e inhabituelle, ou autre chose, n’a pas mis en dĂ©faut la capacitĂ© Ă  restituer comme tu l’entends.

    Si la restitution est rendue impossible, c’est comme si tu n’avais jamais sauvegardĂ© !

    La confiance, en informatique ça se surveille du coin de l’Ɠil
    L’informatique est une science exacte pour la machine, pas pour l’homme ; il compense par l’humilitĂ© et l’empirisme

    Commentaires : voir le flux Atom ouvrir dans le navigateur

    ❌