Outils pour utilisateurs

Outils du site


issue118:c_c

As anyone who has used a computer for any period of time will know - sometimes, things disappear. This can be from a power outage, careless deleting, or hardware failure. As such, backups are always necessary. There are a number of ways to go about this, so today I will outline my personal approach, and the thoughts behind it. Distinctions I segment my backups into three tiers - automatic, manual, and defaults. Automatic backups are pretty simple - I run Borg once a day at 5pm to create a snapshot of my system. You can compare it to Time Machine on OS X. The Borg backups are saved on my NAS (2 disks, in a RAID). The script for that can be found here: http://pastebin.com/nMbuRubx Manual backups are ones I do by hand - typically for large files (such as Linux ISOs), and that I save on an external hard drive. I’m not typically too worried about redundancy for these files, as I can easily download them again. For some files that I want a bit of safety for, I copy it to multiple drives. They’re irregular, and, as such, not worth automating. Lastly, the backups I call defaults. These are mostly dotfiles (configuration files) that I will re-use if I ever set up a new computer, or have to reset my computer for some reason. I save these in a git repository, saved to a private gitlab repository. The actual copying and committing happens through a shell script, which can be found here: http://pastebin.com/1HUAVGHh

Comme tous ceux qui ont utilisé un ordinateur pendant un certain temps le savent, parfois des choses disparaissent. Cela peut être dû à une coupure de courant, une suppression malencontreuse, ou une défaillance matérielle. Voilà pourquoi les sauvegardes sont toujours nécessaires. Puisqu'on peut les faire de nombreuses façons, aujourd'hui je vous décrirai brièvement mon approche personnelle des sauvegardes et les réflexions qui la structurent.

Je divise mes sauvegardes en trois niveaux : automatique, manuelle et celle des défauts. Les sauvegardes automatiques sont simples, je lance Borg quotidiennement à 17 h pour créer un instantané de mon système. Vous pouvez le comparer à la Time Machine sur OS X. Les sauvegardes Borg sont enregistrées sur mon NAS (2 disques dans un RAID). Vous trouverez ici le script pour cela : http://pastebin.com/nMbuRubx

Je fais les sauvegardes manuelles à la main, en général pour de grands fichiers (comme les ISO Linux) ; je les enregistre sur un disque dur externe. Je ne m'inquiète pas habituellement au sujet de la redondance de ces fichiers, car je peux facilement les télécharger à nouveau. Je copie les quelques fichiers que je préfère sains et saufs vers plusieurs disques. Parce qu'elles ne sont pas régulières, ces sauvegardes ne méritent pas d'être automatisées.

Enfin, il y a des sauvegardes que j'appelle les défauts. Ce sont pour la plupart des fichiers à point (de configuration) que je réutiliserai si je dois paramétrer un nouvel ordinateur ou dois réinitialiser le mien pour une raison quelconque. Je sauvegarde ces fichiers-ci dans un dépôt git enregistré sur un dépôt gitlab privé. Pour ce faire, j'utilise un script shell que vous trouverez ici : http://pastebin.com/1HUAVGHh

Explanations Borg The script for Borg is pretty simple - I set up a few variables which will need to be updated. The script also has one optional switch “-p”, which shows the progress of the backup when run manually. The borg command itself is pretty self-explanatory (though less legible thanks to the variables). It essentially skips a few folders that I don’t want backed up, and backs up my home folder to the NAS, while compressing it. After the backup is complete, old backups are pruned down - daily backups for a week, 4 weekly backups, and 6 monthly backups. This helps to keep the space requirements down. I focus mainly on the home folder, as those are the files I want safe. I hardly make any changes to the root filesystem, and the important configuration files I want to keep are covered in my defaults backup. I’ve never had to restore anything from Borg, but using borg extract should allow you to extract all (or some) files from the backup. The Borg documentation is fairly thorough.

Explications

Borg

Le script pour Borg est assez simple, j'ai paramétré quelques variables qui devront être mises à jour. Le script contient également un commutateur optionnel « -p », qui affiche le progrès de la sauvegarde quand elle est faite à la main. La commande borg elle-même est assez explicite, bien que peu lisible à cause des variables. En substance, elle ignore quelques dossiers que je ne veux pas sauvegarder et sauvegarde mon dossier home vers le NAS, tout en le compressant. À la fin de la sauvegarde, les vieilles sauvegardes sont élaguées : les sauvegardes quotidiennes pendant une semaine, 4 sauvegardes hebdomadaires et 6 sauvegardes mensuelles, afin de minimiser l'espace nécessaire.

Je me concentre principalement sur le dossier home, car ce sont ces fichiers-là que je veux mettre en sécurité. Je ne fais guère de modifications au système de fichiers root et les fichiers de configuration importants que je veux garder sont traités dans la sauvegarde des défauts.

Je n'ai jamais eu besoin de restaurer quoi que ce soit de Borg, mais l'utilisation de borg extract devrait vous permettre d'extraire tous (ou certains) des fichiers de la sauvegarde. La documentation de Borg est bien détaillée.

Manuals I just use Thunar or a Terminal to copy files around. The thought process on why I do this by hand is outlined above. This also includes a text file in Dropbox listing some fixes I’ve implemented for some bugs my particular setup has dealt with. Defaults These are files like my configuration for i3, my git settings, and some system-wide files that I’ve changed. The script listed above contains an array of files and directories. The if statements then check if the file is in /etc/ or in my home folder. It then creates a version of the file path without the leading slash or the home path. This is then saved in my repository folder. If the file ends in a slash - i.e. is a directory - then creates the directory if it doesn’t exist in the repository, and copies the contents over. Otherwise it just copies the file. In the else statement, the -r switch is not really necessary for rsync, but I left it there just in case something slips through the if statement.

Les sauvegardes manuelles

J'utilise tout simplement Thunar ou un terminal pour copier des fichiers un peu partout. Les raisons pour lesquelles je le fais à la main figurent ci-dessus. Cela comprend également un fichier texte dans Dropbox qui énumère quelques correctifs de bogues que j'ai implémentés dans ma configuration précise.

Les défauts

Ce sont des fichiers comme ma configuration pour i3, mes paramètres git et quelques fichiers système que j'ai modifiés. Le script dont le lien est donné ci-dessus contient tout un ensemble de fichiers et dossiers. Ensuite, les arguments if vérifient si le fichier se trouve dans /etc/ ou dans mon dossier home. Le script crée alors une version du chemin du fichier sans la barre oblique du début ou le chemin vers home. Puis cela est sauvegardé dans le dossier de mon dépôt. Si le fichier se termine par une barre oblique (autrement dit, est un répertoire), le script crée le répertoire s'il n'existe pas dans le dépôt et en copie le contenu. Sinon, il copie le fichier tout simplement. Dans l'argument else, le commutateur -r n'est pas vraiment nécessaire pour rsync, mais je l'ai laissé au cas où quelque chose est oublié par l'argument if.

I also used rsync instead of cp, in order to be able to avoid .git folders (as they cause permission errors), and because rsync will copy a file only if there are changes. The script also creates a list of packages installed. Since I run Arch Linux, the script uses pacman. For Ubuntu, replacing line 15 with pkglist=”apt list –installed > pkglist.txt” should work. You can then reinstall the packages with cat ~/pkglist.txt > sudo dpkg –set-selections && sudo apt-get dselect upgrade The very last command simply commits and pushes the changes to the git repository.

J'ai également utilisé rsync à la place de cp afin de pouvoir éviter des dossiers .git (car ils sont la source d'erreurs de droits), et parce que rsync ne copiera un fichier que s'il y a des modifications.

Le script crée aussi une liste des paquets installés. Puisque mon ordinateur est sous Arch Linux, le script utilise pacman. Sous Ubuntu, le remplacement de la ligne 15 par pkglist=“apt list –installed > pkglist.txt” devrait fonctionner. Vous pouvez alors réinstaller les paquets avec :

cat ~/pkglist.txt > sudo dpkg –set-selections && sudo apt-get dselect upgrade

La toute dernière commande valide et envoie les modifications au dépôt git.

The reason for doing it this way is so I can easily recreate my setup - whether it’s on a new computer, or if I need to recover after extensive hardware failure. Since the files are pretty small, I pop them into a git repository to keep many versions of it, and then save it to gitlab, so I have access to it, even on other computers. I tend to run the command by hand after editing any of the files it contains. However, you can easily use cron to run it. Conclusion I’ve been using these solutions for a few years, and while I haven’t had any cases of having to restore from Borg, I have had a few external drives fail. And I’ve also set up a few new devices in that time. While there can be some hiccups, it’s been a pretty smooth process overall. I hope this article is helpful to anyone who may be uncertain as to backup approaches. If you already have a setup, feel free to share it with me at lswest34+fcm@gmail.com. I also welcome any questions, or article suggestions.

Je fais mes sauvegardes ainsi pour pouvoir recréer ma configuration facilement, que ce soit sur un nouvel ordinateur ou si j'ai besoin de tout restaurer après des défaillances matérielles importantes. Puisque les fichiers sont très petits, je les mets dans un dépôt git pour en garder plusieurs versions ; ensuite, je les enregistre sur gitlab afin de pouvoir y accéder même depuis d'autres ordinateurs. J'ai tendance à exécuter la commande à la main après avoir édité certains des fichiers qu'il contient. Cependant, vous pouvez facilement vous servir de cron pour la lancer.

Conclusion

J'utilise ces solutions depuis quelques années et, alors que je n'ai eu aucun cas où je devais restaurer des fichiers à partir de borg, quelques disques durs externes sont tombés en panne. Et j'ai aussi paramétré quelques nouveaux dispositifs au cours du même temps. Oui, il peut y avoir quelques petits problèmes, mais, globalement, le processus est sans heurt.

J'espère que cet article sera utile pour quiconque pourrait se poser des questions sur les façons de faire des sauvegardes. Si vous avez déjà la vôtre, n'hésitez pas à la partager avec moi à lswest34+fcm@gmail.com. Vos questions ou suggestions d'article seront aussi les bienvenues.

issue118/c_c.txt · Dernière modification : 2017/03/08 14:48 de andre_domenech