Logiciels de sauvegarde
La mise en place d'un outil sauvegarde est essentielle, que l'on soit administrateur d'un parc informatique ou simple utilisateur d'un ordinateur personnel.
Lorsqu'on ne souhaite pas développer sa propre solution, alors se pose la question du choix parmi les logiciels existants.
Voici donc un comparatif de quelques logiciels libres dédiés à la sauvegarde de fichiers (n'hésitez pas l'enrichir !).
Liste de logiciels[modifier]
Liste non-exhaustive !
- Areca Backup : très complet pour la sauvegarde locale
- BackupPC : système de sauvegarde client/serveur haute performance
- backup-light : Un petit utilitaire de sauvegarde bash
- backup-manager : Un outil de sauvegarde en ligne de commande pour GNU / Linux
- fwbackups : Un programme riche en fonctionnalités de sauvegarde utilisateur
- luckybackup : Un outil de sauvegarde et de synchronisation puissant, rapide et fiable
- rdiff-backup : sauvegarde et synchronisation pratique et transparente
- amanda : Une solution réseau capable de sauvegarde sur bande
- autoarchive : Un outil de sauvegarde simple qui utilise tar
- backintime : Un outil de sauvegarde simple équivalent à Apple Time Machine
- bacula : Une solution de sauvegardes client/serveur pour entreprise
- bontmia : sauvegarde sur le réseau vers de multiples archives incrémentale
- dar : Logiciel pour faire des sauvegardes/restauration incrémentales sur CD/DVD
- dirvish : système de rotation de sauvegarde en réseau rapide sur disque
- duplicity : sauvegarde réseau efficace et chiffrée en utilisant l'algorithme rsync
- deja-dup : interface graphique pour duplicity
- fsarchiver : sauvegarde/déploiement du système de fichiers sûre et flexible
- Holland :
Pays,Président, Programme de sauvegarde modulaire - kbackup : Sauvegardez vos données dans un moyen simple et convivial
- safekeep : Système de sauvegarde client/serveur basé sur rdiff-backup
- snap: Un système modulaire de sauvegarde / restauration du système par snapshot
- tarsnap: Service en ligne de sauvegarde cryptée
- TimeVault : équivalent à Apple Time Machine (plus maintenu)
- Flyback : équivalent à Apple Time Machine
- Simple Backup suite (Sbackup) : outil facile et intégré à gnome
- Backerupper : sauvegarde personnelle à traver le réseau
Outils annexes :
- seivot: outil de benchmarking pour les programmes de sauvegarde
- genbackupdata: Un programme pour générer des données de test pour tester les logiciels de sauvegarde
Fonctionnalités[modifier]
Selon ses besoins, il faudra être attentifs à certaines fonctionnalités particulières :
- type : logiciel client / serveur ou sauvegarde autonome
- modes de sauvegardes : complètes / incrémentale / différentielles
- restauration : cela paraît évident mais certains logiciels ne proposent pas d'interface de restauration ! A l'inverse, d'autres vont jusqu'à permettre la restauration d'un fichier à une date particulière
- planification : pouvoir automatiser l'éxécution
- compression : c'est que ça prend de la place !
- chiffrement : utile si le media de sauvegarde n'est pas stocké dans un coffre
Tableau comparatif[modifier]
Remarque : l'absence de certaines fonctionnalités ci-dessous veut simplement dire qu'elle ne sont pas intégrées dans le logiciel lui-même. Mais on peut souvent les obtenir par d'autres moyens : restauration par tar, planification par cron, compression par gzip, chiffrement par gpg, ...
Nom | OS | Type | Sauvegardes | Restauration | Planification | Filtres | Compression | Chiffrement | Commentaires |
---|---|---|---|---|---|---|---|---|---|
Areca Backup | Lin, Win | local | complètes, différentielles, incrémentales | OUI (avancé) | manuelle | OUI (avancé) | OUI (zip/zip64) | OUI (AES) |
Restauration complète ou avancée avec recherche par fichier et par date. |
BackupPC | Lin, Win | client / serveur | complètes, différentielles, incrémentales | OUI | OUI | OUI | OUI | ? | |
Backup-light | Lin | local | complètes, incrémentales | ? | ? | ? | ? | ? | |
Backup Manager | Lin | local | complètes, incrémentales | NON | OUI | ? | OUI | ? |
Crée des .tar.gz |
fwbackups | Lin, Mac, Win | local | complètes, incrémentales (non compressées) | OUI | OUI | OUI | OUI | NON | Incrémental impossible si la compression est activée (gz ou bz) |
luckybackup | Lin, Mac, Win | local | complètes, incrémentales | OUI | OUI | OUI | NON | NON |
C'est une interface graphique (assez complète) pour rsync |
kbackup | Lin | local | complètes, incrémentales | NON | NON | OUI | OUI | NON |
Très simple, crée des fichiers tar, chaque fichier est compressé séparément |
Bonnes pratiques[modifier]
Voici quelques conseils utiles.
- vérifier souvent les logs des sauvegardes (les envoyer par mail si possible)
- utiliser un jeu de médias externes (disque dur, DVD, bande magnétique, ...)
- stocker les médias de sauvegarde dans un lieu différent
- vérifier l'espace disponible des médias régulièrement
- si nécessaire, chiffrer les sauvegardes et protéger la clé de chiffrement en plusieurs emplacements (papier, mail, clé USB, ...)
- faire des test de restauration réguliers
Exemple de plan de sauvegarde :
- 1 sauvegarde complète par mois
- 1 sauvegarde différentielle par semaine
- 1 sauvegarde incrémentale par jour
- choisir la durée de rétention en fonction des besoins
Cas concret : sauvegarde de portable[modifier]
Description[modifier]
J'ai besoin de réaliser une sauvegarde régulière de mon portable.
Malgré une mobilité moyenne (travail, maison, peu de déplacements), je dois pouvoir réaliser une sauvegarde locale que je synchroniserais ensuite sur un serveur et/ou un disque externe.
Le logiciel de sauvegarde retenu est Areca Backup (même s'il utilise java) pour ses nombreux points forts :
- sauvegardes compressées
- fusion de sauvegardes
- critères d'exclusions très avancés
- restauration possible d'un seul fichier avec recherche
La version utilisée est areca-7.3.7-x86_64.
La planification peut se faire grâce à cron.
Configuration de Areca[modifier]
2 tâches sont créées :
- sauvegarde du système (/etc et /root)
- sauvegarde du répertoire utilisateur (/home/user)
Exemple de configuration au format xml (Clic-droit > Editer au format XML) de la sauvegarde utilisateur.
Voir notamment les nombreuses exclusions par expressions régulières.
<?xml version="1.0" encoding="UTF-8"?> <target version="7" uid="283686751" follow_symlinks="false" register_empty_directories="true" follow_subdirs="true" xml_security_copy="true" name="Users" forward_preproc_errors="true" description="sauvegarde utilisateur"> <source path="/home/user"/> <medium type="directory" file_compression="true" policy="hd" path="/home/Sauvegardes/areca/backups/283686751" archive_name="%YY%-%MM%-%DD%" encrypted="false" track_permissions="true" overwrite="false" zip_level="4" zip_ext="false" zip_charset="UTF-8" zip64="true"> <handler type="standard"/> <transaction_configuration use_transactions="true" transaction_size="102400"/> </medium> <addons> </addons> <filter_group logical_not="false" operator="and" > <regex_filter logical_not="true" rgpattern=".*/\.?c?[Cc]ache/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*/tmp/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*/\.?[Tt]humbnails/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*~$" mode="file_name" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*/nepomuk/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*/akonadi/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern=".*/ImapMail/*" mode="parent_directory" full_match="false"/> <regex_filter logical_not="true" rgpattern="\..*lock" mode="file_name" full_match="false"/> <locked_filter logical_not="true"/> <extension_filter logical_not="true"> <ext>.tmp</ext> <ext>.temp</ext> <ext>.iso</ext> </extension_filter> </filter_group> <email_processor execute_after="true" run_if_success="true" run_if_error="true" run_if_warning="true" run_if_backup="true" run_if_merge="false" run_if_check="false" recipients="email@domain.tld" smtp_host="smtp.domain.tld:465" smtp_user="email@domain.tld" smtp_password="password" smtp_s="true" title="[areca] %COMPUTER_NAME% %TARGET_UID% : %SUCCESS%" from="email@domain.tld" introduction="ARCHIVE : %ARCHIVE% ARCHIVE_NAME : %ARCHIVE_NAME% TARGET_UID : %TARGET_UID% TARGET_NAME : %TARGET_NAME% COMPUTER_NAME : %COMPUTER_NAME% USER_NAME : %USER_NAME% DATE : %DATE% %TIME% SUCCESS : %SUCCESS% WARNING : %HAS_WARNINGS%" statistics="true" list_stored_files="true" max_listed_files="1000"/> </target>
Note : pour exclure tous les fichiers cachés dans le home - par exemple dans le cas ou les fichiers importants (.thunderbird, .mozilla, .ssh, .bashrc, .vimrc, ...) ont été déplacés dans un sous-répertoire "dotfiles" - vous pouvez ajouter les filtres ci-dessous, à placer au début :
<regex_filter logical_not="true" rgpattern="/home/[a-zA-Z]*/\..*" mode="full_path" full_match="true"/> <!-- for ~/.files --> <regex_filter logical_not="true" rgpattern="/home/[a-zA-Z]*/\..*" mode="parent_directory" full_match="true"/> <!-- for ~/.directories -->
Planification[modifier]
Areca Backup n'intègre pas directement d'outil de planification et recommande d'utiliser celui fourni avec l'OS.
Par contre, Areca fourni une version en ligne de commande et un assistant pour générer les scripts à lancer (Clic-droit > Assistants > Générer une stratégie).
Dans ce cas, j'ai choisi de générer 3 scripts :
- une archive tous les 1 jours 7 fois (= une sauvegarde incrémentale tous les jours)
- puis une archive tous les 7 jours 3 fois (= 1 fusion hebdomadaire avec 3 semaines rétention)
- puis une archive tous les 28 jours 1 fois (= 1 fusion des hebdomadaires tous les 28 jours, rétention 1x)
Planification a heure fixe avec cron
Créer un fichier /etc/cron.d/areca :
SHELL=/bin/bash LANG=fr_FR.UTF-8 LANGUAGE=fr LC_CTYPE=fr_FR.UTF-8 areca_sched=/home/Sauvegardes/areca/schedule # Sauvegardes par areca 7.2.13 x86_64 # Planification : # 1_days = backup tous les 1 jours à 12h30 # 7_days = merge tous les 7 jours à 13h30 # 28_days = merge tous les 28 jours à 15h30 # # .---------------------- minute (0 - 59) # | .------------------ hour (0 - 23) # | | .-------------- day of month (1 - 31) # | | | .---------- month (1 - 12) OR jan,f # | | | | .------ day of week (0 - 6) (Su # | | | | | # * * * * * user command to be executed 30 12 * * * root ${areca_sched}/283686751_every_1_days.sh >> ${areca_sched}/areca.log 30 13 * * */7 root ${areca_sched}/283686751_every_7_days.sh >> ${areca_sched}/areca.log 30 15 * * */28 root ${areca_sched}/283686751_every_28_days.sh >> ${areca_sched}/areca.log
Planification a heure variable avec anacron
Solution utile pour un portable ou toute machine ayant des horaires de mise en service variable.
Ajouter ces lignes (avant la ligne contenant "areca_cl.sh") dans les fichiers générés par l'assistant d'areca :
export LANG=fr_FR.UTF-8 export LANGUAGE=fr export LC_CTYPE=fr_FR.UTF-8
- placer les fichiers de type 283686751_every_1_days.sh dans /etc/cron.daily/
- placer les fichiers de type 283686751_every_7_days.sh dans /etc/cron.weekly/
- placer les fichiers de type 283686751_every_28_days.sh dans /etc/cron.monthly/
Synchronisation[modifier]
Ces sauvegardes étant locales, il est nécessaire de les synchroniser sur un support externe en cas de perte du disque.
Exemple 1 : rsync vers partage samba
J'ai branché une disque 2To sur ma box ADSL et activé le partage samba. Mes sauvegardes et dossiers son synchronisé par le réseau avec un script "maison" (voir sauvegarde_smb.sh sur gitorious.org) lui-même planifié par anacron (à l'aide d'un script /etc/cron.daily/launcher qui ne fait que lancer sauvegarde_smb.sh avec ses paramètres)
Exemple 2 : rsync automatique vers disque USB
(Inspiré ce ce post)
Les exemples de scripts et de fichiers de configuration sont dans ce projet, toute contribution est la bienvenue :).
Il faut d'abord écrire un petit script (par exemple : /home/Sauvegardes/areca/scripts/auto-rsync.sh) qui réalise les tâches suivantes :
- identification (par UUID) et montage du disque
- rsync vers le disque
- démontage du disque
Ensuite il faut créer un service systemd (par exemple : /etc/systemd/system/auto-rsync@.service) qui lancera ce script :
[Unit] Description=auto-rsync backups to USB Disk BindsTo=dev-%i.device [Service] Type=simple ExecStart=/home/Sauvegardes/areca/scripts/auto-rsync.sh
Enfin, il faut créer une règle udev (par exemple : /etc/udev/rules.d/90-auto-rsync.rules) qui va lancer le service quand le disque sera branché :
KERNEL=="sd?2", ACTION=="add", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="5106", RUN+="/usr/bin/systemctl --no-block start auto-rsync@%k.service"
Remarques :
- j'utilise la seconde partition du disque, d'ou le sd?2
- penser à relancer systemd et udevd après modifications :
systemctl daemon-reload udevadm control --reload
Liens[modifier]
Quelques liens intéressants.
Sur les sauvegardes :
- Best Linux backup software: 8 tools on test
- 21 of the Best Free Linux Backup Software
- (R)évolutions dans le monde de la sauvegarde de données
- Les solutions de sauvegarde Open Source (interview)
- linuxgazette (voir le tableau "backup policies")
Sur cron et anacron :
- CRON : Configuration de tâches automatisées
- Cron and Crontab usage and examples
- interaction cron et anacron
- Planifier des tâches pour l'ordinateur
Sur rsync et les partages réseaux :