Logiciels de sauvegarde

De Wiki de la GUILDE
Aller à la navigation Aller à la recherche

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

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

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

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.
Génère des scripts pour le planificateur système (cron).
Utilise java.

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

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

Description

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.2.13-x86_64 (la version areca-7.2.14 qui vient de sortir semble bugée).
La planification se faire grâce à cron.

Configuration de Areca

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" >
<extension_filter  logical_not="true">
<ext>.tmp</ext>
<ext>.temp</ext>
</extension_filter>
<regex_filter  logical_not="true" rgpattern=".*/.?c?[Cc]ache/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/tmp/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/.?[Tt]humbnails/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/T[ée]l[ée]chargements/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/Virtual[Bb]ox.*/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*~$" mode="file_name" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/.wine/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/nepomuk/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/akonadi/" mode="full_path" full_match="false"/>
<regex_filter  logical_not="true" rgpattern="\..*lock" mode="file_name" full_match="false"/>
<regex_filter  logical_not="true" rgpattern=".*/ImapMail/" mode="full_path" full_match="false"/>
<locked_filter  logical_not="true"/>
</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>

Planification

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

Ces sauvegardes étant locales, il est nécessaire de les synchroniser sur un support externe en cas de perte du disque. Cela se fera grâce à rsync lancé par un script "maison" (voir sauvegarde_smb.sh sur gitorious.org) lui-même planifié par anacron.

Liens

Quelques liens intéressants.

Sur les sauvegardes :

Sur cron et anacron :

Sur rsync et les partages réseaux :