Backup avec rdup

Perdre ses données a toujours été une grande crainte pour moi mais aussi paradoxal que ça puisse paraitre, je ne faisais pratiquement jamais de backup. Pourquoi ? Simplement parce que je ne trouvais pas de soft qui me convenait. J’ai découvert il y a peu rdup qui m’a fait changer ma sale habitude.

Pour moi un bon programme de backup doit :

  • Pouvoir faire des backup complets et incremental
  • Sauvegarder les données de n’importe quelle façon (via internet ou sur un disque usb)
  • Restaurer les données aussi facilement que la sauvegarde
  • Ne pas être dépendant de ce programme pour lire/restaurer les données
  • Pouvoir restaurer n’importe quel snapshot ou n’importe quel fichier à tout moment

Des programmes comme rsync sont assez bien foutu mais j’avais toujours des soucis à gauche à droite. Puis je suis tombé sur rdup. Je crois que ce qui m’a convaincu était ceci :

I believe a backup program should not invent the wheel again and again. This means that you should use ssh for file transfers and not write a new remote/secure authentication mechanism. Sounds familiar? Indeed: KISS.

Taking these requirements and thinking them through to the max, one comes to the conclusion that the best backup program…. does not backup anything.

ou approximativement en français :

Je crois qu’un programme de backup ne doit pas réinventer la roue encore et encore. Cela signifie que vous devez utiliser ssh pour le transfert de fichier et ne pas ré-implémenter un mécanisme identique. Ça vous rappelle quelque chose ? En effet : KISS (rester simple et stupide).

En prenant en compte ces conditions au maximum, on arrive à la conclusion que le meilleur programme de backup… ne fait aucun backup.

L’unique fonction de rdup est donc de distinguer les fichiers qui ont été modifiés. Sur base de cela, il utilise d’autres programme pour faire la sauvegarde. Ça permet de facilement envoyer les données via n’importe quel protocol, de compresser les données (individuellement ou globalement) et même les chiffrer avec le programme que vous voulez (gpg,…). Ce programme s’inscrit bien dans l’esprit Unix faire une chose mais la faire bien.

Ce programme s’aide de trois outils : rdup pour générer la liste de fichier, rdup-tr pour transformer l’output de la première commande (copie, archivage,…) et rdup-up pour mettre à jour un dossier. La combinaison des 3 peut être assez complexe (je ne saisis pas bien toujours tout) mais heureusement il existe un script nommé rdup-simple (installé avec les 3 outils) qui combine cela facilement.

Il utilise la syntaxe suivante :

$ rdup-simple [option] source destination

soit par exemple

$ rdup-simple -s 2 -E /home/mart/.rdup/exclude.home /home/mart /media/backup/

pour enregistrer ma home sur mon disque dur externe dans le dossier rdup/home. Le -E indique le fichier d’exclusion (un patern par ligne) et le -s 2 pour passer les deux premiers dossiers dans le chemin de la source (donc home/ et mart/ ici). Ainsi le fichier /home/mart/myfile.txt sera sauvé dans /media/backup/201005/20/myfile.txt (à la place de /media/backup/201005/20/home/mart/myfile.txt sans le « -s »). A chaque nouveau backup, un nouveau dossier est créé par jour (donc pas plus d’un backup par jour avec ce script) et un lien statique de chaque fichier du backup précédent (s’il n’a pas été modifié/supprimé) est créé. Ainsi vos backups sont incrémentaux et légers. Pour la restauration un simple cp ou le même script à l’envers est suffisant.

Et les compressions et tout ça ? Facile, comme je le disais on utilise des programmes déjà tout faits. Dans la commande rdup, on peut inclure facile n’importe quelle commande avec l’option -P collée à la commande et dont les paramètres sont séparés par une virgule.

rdup -Pgzip … pour la compression avec gzip

rdup -Pmcrypt,-f,KEYFILE … pour le chiffrage avec mcrypt

Si vous voulez utiliser le script rdup-simple (qui comme le dit son nom est plus simple), c’est aussi possible.rdup-simple -help explique comment envoyer par ssh, chiffrer avec gpg,…

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$ rdup-simple -help
/usr/bin/rdup-simple [+N] DIR [DIR ...] DEST

This is a wrapper around rdup, rdup-tr and rdup-up

DIR  - directories to back up
+N   - Look N days back for previous backups, defaults to 8
DEST - where to store the backup. This can be:
    ssh://user@host/directory (note: no colon after the hostname)
    ssh://host/directory
    file:///directory (note: 3 slashes)
    /directory
    directory

OPTIONS:
 -k KEYFILE encrypt all files: rdup -Pmcrypt,-f,KEYFILE
 -g     encrypt all files: rdup -Pgpg,--default-recipient-self,--encrypt
 -z         compress all files: rdup -Pgzip
 -E FILE    use FILE as an exclude list
 -f         force a full dump
 -v         echo the files processed to stderr and be more verbose
 -n     dry run; show the actually rdup command and pass -n to rdup
 -a     reset atime
 -x         pass -x to rdup
 -s NUM     pass -s NUM to rdup-up (strip NUM leading path components)
 -X FILE    encrypt all paths with AES and key in FILE
 -Y FILE    decrypt all paths with AES and key in FILE
 -h         this help
 -V         print version
Vus : 448
Publié par mart-e : 65