« Logiciels de sauvegarde » : différence entre les versions

De Wiki de la GUILDE
Aller à la navigation Aller à la recherche
(→‎Tableau comparatif : luckybackup)
m (→‎Description : update)
 
(27 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
''Page en cours de rédaction ...''
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.<br />
 
Lorsqu'on ne souhaite pas développer sa propre solution, alors se pose la question du choix parmi les logiciels existants.<br />
== Introduction ==
Voici donc un comparatif de quelques logiciels libres dédiés à la sauvegarde de fichiers (n'hésitez pas l'enrichir !).
 
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.




Ligne 15 : Ligne 9 :


* Areca Backup : très complet pour la sauvegarde locale
* Areca Backup : très complet pour la sauvegarde locale
* BackupPC : High-performance backup system
* BackupPC : système de sauvegarde client/serveur haute performance
* backup-light : A small backup bash utility
* backup-light : Un petit utilitaire de sauvegarde bash
* backup-manager : A command line backup tool for GNU/Linux
* backup-manager : Un outil de sauvegarde en ligne de commande pour GNU / Linux
* fwbackups : A feature-rich user backup program
* fwbackups : Un programme riche en fonctionnalités de sauvegarde utilisateur
* luckybackup : A powerful, fast and reliable backup and sync tool
* luckybackup : Un outil de sauvegarde et de synchronisation puissant, rapide et fiable
* rdiff-backup : Convenient and transparent local/remote incremental mirror/backup
* rdiff-backup : sauvegarde et synchronisation pratique et transparente
* amanda : A network-capable tape backup solution
* amanda : Une solution réseau capable de sauvegarde sur bande
* autoarchive : A simple backup tool that uses tar
* autoarchive : Un outil de sauvegarde simple qui utilise tar
* backintime : A simple backup tool
* backintime : Un outil de sauvegarde simple équivalent à Apple Time Machine
* bacula : Serveur de sauvegardes
* bacula : Une solution de sauvegardes client/serveur pour entreprise
* bontmia : Backup over network to multiple incremental archives
* bontmia : sauvegarde sur le réseau vers de multiples archives incrémentale
* dar : Software for making/restoring incremental CD/DVD backups
* dar : Logiciel pour faire des sauvegardes/restauration incrémentales sur CD/DVD  
* dirvish : Fast, disk based, rotating network backup system
* dirvish : système de rotation de sauvegarde en réseau rapide sur disque
* duplicity : Encrypted bandwidth-efficient backup using rsync algorithm
* duplicity : sauvegarde réseau efficace et chiffrée en utilisant l'algorithme rsync
* deja-dup : Simple backup tool and frontend for duplicity
* deja-dup : interface graphique pour duplicity
* dvdbackup : Command line tool for ripping video DVDs
* fsarchiver : sauvegarde/déploiement du système de fichiers sûre et flexible
* fsarchiver : Safe and flexible file-system backup/deployment tool
* Holland : <strike>Pays</strike>, <strike>Président</strike>, Programme de sauvegarde modulaire
* holland : Pluggable Backup Framework
* kbackup : Sauvegardez vos données dans un moyen simple et convivial
* k9copy : Video DVD backup and creation program
* safekeep : Système de sauvegarde client/serveur basé sur rdiff-backup
* kbackup : Back up your data in a simple, user friendly way
* snap: Un système modulaire de sauvegarde / restauration du système par snapshot
* safekeep : The SafeKeep backup system
* tarsnap: Service en ligne de sauvegarde cryptée
* snap : A modular system backup/restore utility
* TimeVault : équivalent à Apple Time Machine (plus maintenu)
* tarsnap : Online encrypted backup service (client)
* Flyback : équivalent à Apple Time Machine
* Simple Backup suite (Sbackup) : outil facile et intégré à gnome
* Backerupper : sauvegarde personnelle à traver le réseau


Outils annexes :
Outils annexes :
* seivot : Benchmarking tool for backup programs
* seivot: outil de benchmarking pour les programmes de sauvegarde
* genbackupdata : A program to generate test data for testing backup software
* genbackupdata: Un programme pour générer des données de test pour tester les logiciels de sauvegarde
 


== Fonctionnalités ==
== Fonctionnalités ==
Ligne 64 : Ligne 59 :
! Nom !! OS !! Type !! Sauvegardes !! Restauration !! Planification !! Filtres !! Compression !! Chiffrement !! Commentaires
! Nom !! OS !! Type !! Sauvegardes !! Restauration !! Planification !! Filtres !! Compression !! Chiffrement !! Commentaires
|-
|-
| [http://www.areca-backup.org/ Areca Backup] || Lin, Win || local || complètes, différentielles, incrémentales || OUI *** || manuel || OUI (avancé) || OUI (zip, zip64) || OUI (AES) || Génère des scripts pour le planificateur système (cron)
| [http://www.areca-backup.org/ 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.<br />
Génère des scripts pour le planificateur système (cron).<br />
Utilise java.
|-
|-
| [http://backuppc.sourceforge.net/ BackupPC] || Lin, Win  || client / serveur || complètes, différentielles, incrémentales  || OUI || OUI || OUI || OUI || ? ||  
| [http://backuppc.sourceforge.net/ BackupPC] || Lin, Win  || client / serveur || complètes, différentielles, incrémentales  || OUI || OUI || OUI || OUI || ? ||  
Ligne 70 : Ligne 68 :
| [http://code.google.com/p/backup-light/ Backup-light] || Lin || local  || complètes, incrémentales  || ? || ? || ? || ? || ? ||  
| [http://code.google.com/p/backup-light/ Backup-light] || Lin || local  || complètes, incrémentales  || ? || ? || ? || ? || ? ||  
|-
|-
| [http://www.backup-manager.org Backup Manager] || Lin || local || complètes, incrémentales || NON || OUI || ? || OUI || ? || crée des .tar.gz
| [http://www.backup-manager.org Backup Manager] || Lin || local || complètes, incrémentales || NON || OUI || ? || OUI || ? ||  
Crée des .tar.gz
|-
|-
| [http://www.diffingo.com/oss/fwbackups fwbackups] || Lin, Mac, Win || local  || complètes, incrémentales || OUI ** || OUI || OUI || OUI || ? ||  
| [http://www.diffingo.com/oss/fwbackups 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)
|-
|-
| [http://luckybackup.sourceforge.net luckybackup] || Lin, Mac, Win || local || complètes, incrémentales || OUI || OUI || OUI || NON || NON || C'est une interface graphique (assez complète) pour rsync
| [http://luckybackup.sourceforge.net 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 ||   ||     ||             ||             ||               ||         ||             ||             ||  
| [http://www.kde-apps.org/content/show.php?content=44998 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
|-
|-
|    ||    ||      ||            ||              ||              ||        ||            ||            ||  
|    ||    ||      ||            ||              ||              ||        ||            ||            ||  
Ligne 83 : Ligne 84 :
|}
|}


''*** restauration complète ou avancée par fichier et par date''<br />
''** restauration par date''


== Bonnes pratiques ==
== 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.<br/>
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.<br/>
La planification peut 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.<br/>
Voir notamment les nombreuses exclusions par expressions régulières.
<pre>
<?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%&#xA;ARCHIVE_NAME : %ARCHIVE_NAME%&#xA;TARGET_UID : %TARGET_UID%&#xA;TARGET_NAME : %TARGET_NAME%&#xA;COMPUTER_NAME : %COMPUTER_NAME%&#xA;USER_NAME : %USER_NAME%&#xA;DATE : %DATE% %TIME%&#xA;SUCCESS : %SUCCESS%&#xA;WARNING : %HAS_WARNINGS%" statistics="true" list_stored_files="true" max_listed_files="1000"/>
</target>
</pre>
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 :
<pre>
<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 -->
</pre>
=== Planification ===
Areca Backup n'intègre pas directement d'outil de planification et recommande d'utiliser celui fourni avec l'OS.<br/>
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 :
<pre>
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
</pre>
'''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 :
<pre>
export LANG=fr_FR.UTF-8
export LANGUAGE=fr
export LC_CTYPE=fr_FR.UTF-8
</pre>
* 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.
'''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 [https://gitorious.org/mytools/mytools/blobs/master/sauvegarde_smb.sh 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 [http://forums.opensuse.org/english/get-technical-help-here/hardware/485261-script-run-udev-rule-gets-killed-shortly-after-start.html#3 ce post])
Les exemples de scripts et de fichiers de configuration sont dans [https://gitorious.org/perso-backup/perso-backup/trees/master/scripts 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 :
<pre>
[Unit]
Description=auto-rsync backups to USB Disk
BindsTo=dev-%i.device
[Service]
Type=simple
ExecStart=/home/Sauvegardes/areca/scripts/auto-rsync.sh
</pre>
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é :
<pre>
KERNEL=="sd?2", ACTION=="add", ATTRS{idVendor}=="174c", ATTRS{idProduct}=="5106", RUN+="/usr/bin/systemctl --no-block start auto-rsync@%k.service"
</pre>
Remarques :
* j'utilise la seconde partition du disque, d'ou le sd?2
* penser à relancer systemd et udevd après modifications :
<pre>
systemctl daemon-reload
udevadm control --reload
</pre>
== Liens ==
Quelques liens intéressants.
Sur les sauvegardes :
* [http://www.techradar.com/news/software/applications/best-linux-backup-software-8-tools-on-test-909380/page:1 Best Linux backup software: 8 tools on test]
* [http://www.linuxlinks.com/article/20090105114152803/Backup.html 21 of the Best Free Linux Backup Software]
* [http://linuxfr.org/news/r-evolutions-dans-le-monde-de-la-sauvegarde-de-donnees (R)évolutions dans le monde de la sauvegarde de données]
* [http://www.intelli-n.tv/videobe-ware/les-solutions-de-sauvegarde-open-source/ Les solutions de sauvegarde Open Source] (interview)
* [http://linuxgazette.net/104/odonovan.html linuxgazette] (voir le tableau "backup policies")
Sur cron et anacron :
* [http://doc.fedora-fr.org/wiki/CRON_:_Configuration_de_t%C3%A2ches_automatis%C3%A9es CRON : Configuration de tâches automatisées]
* [http://www.pantz.org/software/cron/croninfo.html Cron and Crontab usage and examples]
* [http://voidandany.free.fr/index.php/planificateurs-de-taches-cron-et-anacron-et-leurs-interactions/ interaction cron et anacron]
* [http://wiki.mandriva.com/fr/Planifier_des_tâches_pour_l'ordinateur Planifier des tâches pour l'ordinateur]
Sur rsync et les partages réseaux :
* [http://ordi-zen.objectis.net/linux/foire-aux-questions-faq/comment-monter-automatiquement-ses-partages-samba-cifs Comment monter automatiquement ses partages SAMBA - CIFS ?]
* [http://www.thelinuxblog.com/rsync-to-smb-share/ rsync to smb share]

Dernière version du 14 novembre 2013 à 20:16

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.
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[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 :

Sur cron et anacron :

Sur rsync et les partages réseaux :