Stratégie et mise en pratique d'une sauvegarde de vos données efficace

Stratégie de sauvegarde

Dans cet article, je vais vous parler de la sauvegarde de vos documents importants. Je pense en particulier aux photos et aux vidéos. Vous savez, on en prend énormément, on les met sur son ordinateur, et on ne les sauvegarde que lorsqu'on y pense. Je vous propose un petit article pour vous expliquer les bonnes pratiques pour une sauvegarde de qualité. L'idée, c'est d'avoir une sauvegarde du type install it on for get it.

Datacenter

Tout ce qui a un prix n'a pas de valeur. (Nietzsche)

il faut donc que la sauvegarde soit :

  • Automatique
  • Distante
  • Incrémentale (Je ne vais pas vous expliquer ce que c'est, je vous invite à lire ce lien Wikipédia sur les sauvegardes incrémentales )

Voilà une petite parenthèse avant de vous parler des points importants de la sauvegarde :

J'aimerais bien vous parler des NAS et en particulier du mirroring (ou RAID 1). Avoir une sauvegarde en plusieurs exemplaires c'est très bien, mais contrairement à ce que beaucoup de personnes croient, il ne faut pas considérer le RAID 1 ( mirroring) comme une solution de sauvegarde. En effet, vos données seront bien en plusieurs exemplaires, mais le but du mirroring est de fournir de la haute disponibilité. C'est-à-dire que si vous avez un disque dur qui vous lâche, vous pouvez continuer de travailler, vous remplacez le disque dur défectueux et les données seront reconstruites. En aucun cas il ne s'agit d'un système de sauvegarde. En effet, le but d'une sauvegarde c'est de pouvoir récupérer des données que vous avez perdu, mais quand je parle de perdu, je ne parle pas forcément d'une perte à cause d'un problème matériel. Vous pouvez très bien avoir supprimé un fichier par erreur et vous souhaitez le récupérer. En plus de ça, vous pouvez perdre des données à cause d'une inondation, un incendie, un cambriolage, la foudre ou bien d'autres raisons encore. et dans tous les cas que je viens de citer, vous aurez beau avoir un NAS avec du RAID 1, vous aurez perdu vos données (puisqu’elle seront au même endroit). De plus, lorsque l'on utilise du RAID 1, c'est pour avoir de la haute disponibilité. Et bien souvent, les utilisateurs vont y placer exactement les mêmes modèles de disque dur : la même marque, la même taille et la même série. Du coup, lorsque l'un des disque dur va lâcher, l'autre disque sera toujours en vie, mais il aura exactement le même nombre de lectures et d'écritures. Il y aura donc de très fortes chances de lâcher à peu près au même moment. Et lorsque vous allez insérer un nouveau disque dur pour reconstruire les données, il va devoir lire l'intégralité du disque dur qui a survécu, ce qui va certainement terminer de l'achever. Donc lorsque vous utilisez du RAID 1, penser à utiliser 2 disques durs de marques différentes. Certains vont vous dire que vous allez perdre en performance, c’est vrai, mais ça n'est pas le but du mirroring. Si vous voulez des performances, utilisez du stripping (RAID0). Après, vous pouvez très bien utiliser du RAID 0+1, mais ça n'est pas le but de cet article.

Revenons donc aux points importants pour notre sauvegarde. Il faut donc qu'elle soit automatique. Sinon, on aura toujours du retard au moment où on en aura besoin et on perdra des données.

Pour l'argumentation du fait que votre sauvegarde doit être distante, je crois que ma petite parenthèse lorsque je vous ai parlé du RAID 1 est un bon exemple.

Enfin, une sauvegarde incrémentale permettra par exemple de récupérer des fichiers supprimés par erreur. Il peut aussi arriver que l'on met un peu de temps avant de se rendre compte que l'on a perdu des fichiers.

L'idéal, c'est de centraliser toutes ses données par exemple dans un NAS. Ensuite, il va falloir qu'un serveur distant aille chercher les données de ce NAS. Et c'est très important que ce soit le serveur distant qui aille chercher les données et non le contraire. Pourquoi ? Pour des raisons de sécurité. Si votre NAS est compromis au niveau de la sécurité, et si c'est lui qui poussent les données vers votre serveur de sauvegarde,Vous n'avez aucune garantie que le NAS continue de pousser les données. Un autre problème, si le NAS est capable d'établir la connexion de votre serveur distant, il pourra également effacer les données déjà sauvegarder. Par contre, si c'est le serveur distant qui initialiser une connexion vers votre NAS, dans ce cas-là, même si la sécurité du NAS est compromise, vos données déjà sauvegardées sur le serveur distant ne sont pas affectés et le NAS ne pourra pas les écraser.

disque dur

L'exemple le plus flagrant, ce sont les ransomware. Si la sécurité de votre ordinateur est compromise, le ransomware va se mettre à chiffrer vos disques durs locaux. C'est déjà assez gênant comme ça, mais si votre ordinateur a un montage réseau distant, il sera capable d'aller lire et écrire sur les sauvegardes. Votre ordinateur se mettra donc à chiffrer les disque dur distant. Vos sauvegardes seront bonnes à jeter.

Pour mettre en place simplement ce système, je vous propose d'utiliser le logiciel Rsnapshot. C'est un logiciel plutôt simple, robuste et éprouvé depuis de nombreuses années. ce logiciel comporte plusieurs avantages il est capable de se connecter en SSH à un serveur distant. il est également capable de faire des sauvegardes incrémentales.

Ce logiciel fonctionne sous Linux. Comment est-ce qu'il gère les sauvegardes incrémentales ?

Il va s'appuyer sur les hardlink

C'est-à-dire qu'il va effectuer une première sauvegarde (le 1er jour) qui va s'appeler par exemple “daily.0”. Cette sauvegarde contiendra par exemple 1000 photos.

Le deuxième jour, lorsque l’on aura ajouté 10 photos, il ne sera pas nécessaire de sauvegarder à nouveau les 1000 photos que l'on avait déjà sauvegardé dans le répertoire daily.0. Si par exemple on ajoute 10 photos tous les jours, en faisant une sauvegarde par jour, on devrait sauver le premier jour 1000 photos, le deuxième jour 1010 photos, le troisième jour 1020 photos, le quatrième jour 1030 photos etc.

Les hardlink vont éviter cela. Lorsque Rsnapshot va lancer une sauvegarde le deuxième jour il va copier virtuellement daily.0 en daily.1. c'est-à-dire que sur le disque il va simplement créer 1000 nouveaux pointeurs vers les photos déjà existante. Donc les données ne seront pas réellement copiées.

$ ls -lhF
total 8,0K
-rw-r--r-- 1 antoine antoine  9 févr. 12 19:12 text1.txt
-rw-r--r-- 1 antoine antoine 17 févr. 12 19:12 text2.txt

Rsnapshot va donc effectuer cette commande :

$ cp -rl daily.0/ daily.1/

On a donc presque le même résultat :

$ ls -lhF
total 8,0K
-rw-r--r-- 2 antoine antoine  9 févr. 12 19:12 text1.txt
-rw-r--r-- 2 antoine antoine 17 févr. 12 19:12 text2.txt

En effet, les fichiers ont les mêmes noms et la même taille. Mais si vous faites bien attention, vous pouvez constater que dans la deuxième colonne, juste après les droits sur les fichiers le 1 est devenu 2. En fait cela veut dire qu'il y a de nom de fichier qui pointe vers les mêmes données. Si je copie un nouveau avec l'option -l, il y aura 3 liens pour chaque fichiers texte :

$ cp -rl daily.1/ daily.2/

$ ls -lhF
total 8,0K
-rw-r--r-- 3 antoine antoine  9 févr. 12 19:12 text1.txt
-rw-r--r-- 3 antoine antoine 17 févr. 12 19:12 text2.txt

On voit bien qu’ils ont la même taille :

$ du -sh daily.0
12K     daily.0
$ du -sh daily.1
12K     daily.1
$ du -sh daily.2
12K     daily.2

Pourtant sur le disque, il n'y a que le premier répertoire qui prend réellement de la place :

$ du -sh *
12K     daily.0
4,0K    daily.1
4,0K    daily.2

Pour le répertoire daily.1 et daily.2 les données n'ont pas été physiquement copier, c'est juste qu'un pointeur a été créé sur chaque fichier. C'est pour cela que c'est de répertoire sont plus petit que le premier. Voilà donc comment fonctionne Rsnapshot.

Mise en pratique

Le NAS (sous Linux) à sauvegarder s’appellera donc NAS1, il aura l’utilisateur user et le répertoire à sauvegarder s’appellera photos.

Le serveur distant s'appellera server1. il doit être capable de se connecter à NAS1 à l'aide d'une clé SSH (sans mot de passe donc). Rsnapshot sera installé sur server1 qui ira sauvegarder NAS1 en s’y connectant par SSH. il faut donc qu'il puisse y accéder sans avoir besoin de taper de mot de passe pour cela, on va générer une clé RSA. Le server1 sera donc capables de se connecter à NAS1 sans utiliser de login et de mot de passe.

Pour cela depuis server1 on doit créer une clé SSH ( si ce n'est pas déjà fait) :

$ ssh_keygen -t rsa

Pour copier la clef sur NAS1, on peut faire des manipulations un peu fastidieuse pour prendre la clé publique depuis server1 et la mettre dans le fichier

user@NAS1:~/.ssh/authorized_keys

Mais on peut faire plus simplement. Depuis server1 en utilisant la commande :

$ ssh-copy-id user@NAS1

On a copié la clé et on va vérifier que l'on peut maintenant se connecter sans avoir besoin de taper le mot de passe. Depuis server1 on tape la commande :

$ ssh user@NAS1

Et donc doit donc réussir sans avoir besoin de taper de mot de passe.

On installe Rsnapshot sur server1 (c’est lui qui initie la connexion vers NAS1 pour effectuer la sauvegarde).

Avec une distribution à base de Debian, on fait :

# apt-get install rsnapshot

ou avec sudo :

$ sudo apt-get install rsnapshot

Une fois rsnapshot installé, il faut aller configurer le fichier /etc/rsnapshot.conf. Dans ce fichier, on le configure avec une clé et une valeur correspondante. Il faut savoir contre la clé est la valeur il ne faut pas mettre d'espace, mais il faut mettre une tabulation, sinon rsnapshot ne fonctionnera pas.

Voilà les clés importante à configurer :

snapshot_root   /home/backup_user/rsnapshot_directory/

==> le répertoire où sera stockées les sauvegardes.

Je ne me souviens plus exactement quelles étaient les lignes qui étaient commentées et celle qui ne l'étaient pas, mais dans mon fichier de configuration voilà les clés que j'ai rempli :

cmd_cp          /bin/cp
cmd_rm          /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh         /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du          /usr/bin/du
cmd_rsnapshot_diff      /usr/bin/rsnapshot-diff

Je suppose que dans votre fichier de configuration vous aurez des valeurs par défaut, il faut absolument que la ligne concernant SSH soit bien décommenté. Oui, puisque vous passerez par ssh pour effectuer vos sauvegardes.

Ensuite, ces lignes vont indiquer la fréquence de vos sauvegardes :

retain          daily   7
retain          weekly  4
retain          monthly 36

ici, je sauvegarde quotidiennement mes fichiers, et je garde 7 jours. Ensuite je n'ai besoin de conserver qu'une seule sauvegarde par semaine. Et enfin je conserve 36 mois de sauvegarde.

Pour éviter de saturer ma bande passante en upload j'ai rajouté cette commande :

rsync_long_args         --delete --numeric-ids --delete-excluded --bwlimit=90

Cela permet de limiter l’upload depuis NAS1 vers server1 à 90 ko/s. A vous d'adapter en fonction de votre vitesse d'upload.

Et enfin voilà la ligne la plus importante pour que server1 puisse se connecter à NAS1 :

backup  user@NAS1:/home/user/photos  Pictures/       ssh_args=-p 30022

Vous remarquerez la quatrième colonne, elle permet de passer des arguments en SSH par exemple ici pour passer sur un port non standard. bien sûr, à la place de NAS1, vous indiquerez l’IP ou le nom de domaine de votre NAS1. il faut bien entendu que l'on puisse effectuer un accès depuis l'extérieur vers votre NAS1. pensez donc à faire du port forwarding de votre box internet au besoin.

Il ne reste plus qu'à éditer le fichier crontab pour programmer les sauvegardes (je vous laisse consulter la vaste documentation sur le net pour éditer le crontab) :

$ crontab -e

00 4          * * *              /usr/bin/rsnapshot daily
00  10          * * 5            /usr/bin/rsnapshot weekly
00 12          2 * *             /usr/bin/rsnapshot monthly

Voilà donc à quoi ressemble le répertoire destination de sauvegarde :

total 116K
drwxr-xr-x 3 root root 4,0K févr. 12 03:02 daily.0/
drwxr-xr-x 3 root root 4,0K févr. 11 03:02 daily.1/
drwxr-xr-x 3 root root 4,0K févr. 10 03:02 daily.2/
drwxr-xr-x 3 root root 4,0K févr.  9 03:02 daily.3/
drwxr-xr-x 3 root root 4,0K févr.  8 03:02 daily.4/
drwxr-xr-x 3 root root 4,0K févr.  7 03:02 daily.5/
drwxr-xr-x 3 root root 4,0K févr.  6 03:02 daily.6/
drwxr-xr-x 3 root root 4,0K déc.  31 03:02 monthly.0/
drwxr-xr-x 3 root root 4,0K déc.   3 03:02 monthly.1/
drwxr-xr-x 3 root root 4,0K mars   5  2016 monthly.10/
drwxr-xr-x 3 root root 4,0K janv. 30  2016 monthly.11/
drwxr-xr-x 3 root root 4,0K janv.  2  2016 monthly.12/
drwxr-xr-x 3 root root 4,0K déc.   5  2015 monthly.13/
drwxr-xr-x 3 root root 4,0K oct.  24  2015 monthly.14/
drwxr-xr-x 3 root root 4,0K oct.   3  2015 monthly.15/
drwxr-xr-x 3 root root 4,0K juil. 28  2015 monthly.16/
drwxr-xr-x 3 root root 4,0K juin  23  2015 monthly.17/
drwxr-xr-x 3 root root 4,0K oct.  29 03:02 monthly.2/
drwxr-xr-x 3 root root 4,0K oct.   1 03:02 monthly.3/
drwxr-xr-x 3 root root 4,0K sept.  3 03:02 monthly.4/
drwxr-xr-x 3 root root 4,0K juil. 30  2016 monthly.5/
drwxr-xr-x 3 root root 4,0K juil.  2  2016 monthly.6/
drwxr-xr-x 3 root root 4,0K févr.  4 03:02 weekly.0/
drwxr-xr-x 3 root root 4,0K janv. 28 03:02 weekly.1/
drwxr-xr-x 3 root root 4,0K janv. 21 03:02 weekly.2/
drwxr-xr-x 3 root root 4,0K janv. 14 03:02 weekly.3/

Et voilà pour ce premier article sur les sauvegardes. Le plus important étant surtout de faire une sauvegarde automatique, distante et incrémental. Pour les détails, je suis peut-être aller un peu rapidement sur les explications, mais vous trouverez des dizaines voir des centaines d'exemples sur le net.

J'éditerais certainement cet article par la suite pour l'améliorer. J'espère qu'il vous a plu.

A bientôt ! :)


Author: Antoine

Geek et sociable

Comments on “Stratégie et mise en pratique d'une sauvegarde de vos données efficace”