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 :
soit par exemple
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 |