Ceci est une ancienne révision du document !
rsnapshot est un outil de sauvegarde basé sur rsync. Grâce à rsnapshot, il est possible de prendre des instantanés de vos systèmes de fichiers à différents instants. Utilisant les liens durs, rsnapshot créé l’illusion de l’existance de multiples sauvegardes complétes, tout en n’occupant que la place d’une seule plus les différences. Couplé avec ssh, il est également possible de prendre des instantanés de systèmes de fichiers distants. Ce document est un tutoriel d’installation et de configuration de rsnapshot.
rsnaphost est écrit en Perl et dépends de rsync. OpenSSH, GNU cp et le programme BSD logger sont également recommandés mais pas necessaires. Tous ceux-ci devraient être présents sur la plupart des systèmes Linux. rsnapshot est écrit avec le plus petit dénomitateur commun en tête. Au minimum il ne requiert que Perl 5.0004 et rsync. Ceci fait qu’il fonctionne sur quasiment n’importe quel système UNIX vous voudrez l’installer. Il a été testé avec succès avec Perl 5.0004 à 5.8.2, sur Debian, Redhat, Fedora, Solaris, Mac OS X, FreeBSD, OpenBSD, et IRIX.
source: http://www.rsnapshot.org/howto/1.1/rsnapshot-HOWTO.fr.html
aptitude install rsnapshot vi /etc/rsnapshot.conf
Configurer votre répertoire de stockage, pour ma part, un disque dur externe
snapshot_root /media/backup/
Décommenter les lignes
cmd_cp /bin/cp cmd_ssh /usr/bin/ssh
L’option suivante est intéressante, elle permet d’utiliser rsync
pour la création de lien dur, plutôt que la commande cp -al
link_dest 1
Modifier l’intervalle de sauvegarde
######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # ######################################### retain hourly 6 retain daily 7 retain weekly 4 #retain monthly 3
hourly ne veut pas dire toutes les heures mais toutes les 4 heures par défaut, donc le 6 permet d’avoir des sauvegardes sur 24h (6*4). Cela étant dit, il est possible de définir hourly s’exécutant toutes les heures.
daily s’exécute tous les jours et garde un historique sur 7 jours.
weekly s’exécute toutes les semaines et garde un historique sur 4 semaines.
Dans mon cas, je voudrais garder les 30 derniers jours et pourquoi pas garder les 12 derniers mois.
retain daily 30 retain monthly 12
Modifier ensuite à la fin du fichier la section
############################### ### BACKUP POINTS / SCRIPTS ### ###############################
Comme bon vous semble. Pour mon cas, je veux sauvegarder tout le répertoire /var/www de mon serveur web distant vers mon serveur de backup ou rsnapshot est installé et ce de façon journalière. Je vais donc mettre
backup root@edmc73.com:/var/www edmc73.com/
La sauvegarde du répertoire /var/www de mon serveur web se fera sur mon serveur de backup dans /media/backup/edmc73.com/var/www
Pour tester si notre config fonctionne, utilisez la commande
rsnapshot configtest
qui devrait retourner
Syntax OK
Ensuite la simulation d’un backup journalier
:~# rsnapshot -t daily echo 11500 > /var/run/rsnapshot.pid mkdir -m 0755 -p /media/backup/daily.0/edmc73.com/ /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \ --rsh=/usr/bin/ssh root@edmc73.com:/var/www \ /media/backup/daily.0/edmc73.com/ touch /media/backup/daily.0/
On voit ici ce que va faire rsnapshot. Créer un fichier de lock, créer le répertoire cache, faire un rsync via ssh dans les répertoires qui vont bien.
Assurez vous que votre serveur de backup est bien accès au serveur à sauvegarder via ssh avec une clé public (voir SSH)
Et assurez-vous d’avoir installez rsync sur la machine à sauvegarder
aptitude install rsync
Pour programmer l’exécution, nous allons configurer le cron de rsnapshot
vi /etc/cron.d/rsnapshot
Toujours dans mon cas, décommentez la ligne daily et monthly.
Vous pouvez lancer la commande suivante à la main
rsnapshot daily
Mais sachez qu’à chaque fois que vous la lancerez, vous décalerez votre sauvegarde. daily.0 deviendra daily.1 et la nouvelle sauvegarde sera daily.0 De ce fait, l’écart entre les 2 daily ne sera pas d’une journée. Donc à éviter !
Sous windows, un service rsync existe, il s’appelle cwRsync Server et est disponible normalement ici ⇒ https://www.itefix.no/i2/cwrsync mais à l’heure ou j’écris ces lignes, le site ne répond pas et j’ai trouvé un site non officiel proposant le téléchargement ici ⇒ http://www.backupassist.com/rsync/
Exécutez cwRsyncServer_4.1.0_Installer.exe et suivez les instructions, n’installez pas SSH (nous sommes dans mon cas dans un réseau local, pas la peine de crypter nos données).
Un mot de passe est proposé pour faire tourner le service, laissez ceci par défaut, nous n’en avons pas besoin.
Modifiez le fichier C:\Program Files\cwRsyncServer\rsyncd.conf ou C:\Program Files\ICW\rsyncd.conf
use chroot = false strict modes = false hosts allow = * log file = rsyncd.log # Module definitions # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work # [test] path = /cygdrive/c/Documents and Settings/Moi read only = false transfer logging = no UID = 0 GID = 0 exclude from =/cygdrive/C/Program Files/ICW/exclude.txt
Exemple :
- /Recent/ - /Local Settings/Temp/ - /Local Settings/Historique/ - /Local Settings/Temporary Internet Files/ - /Cookies/ - /Favoris/ - /IECompatCache/ - /IETldCache/ - /PrivacIE/ - /SendTo/ - /UserData/ - /Voisinage*/ - Thumbs.db - desktop.ini - NTUSER.DAT - ntuser.dat.LOG
En savoir plus sur les exclusions ⇒ https://www.itefix.no/i2/content/excluding-directories-cwrsync
Allez dans votre gestionnaire de service ou pour aller plus vite [Touche Windows]+r tapez services.msc puis Entrée
Recherchez RsyncServer. Par défaut il est en Manuel, double-cliquez dessus, mettez le type de démarrage en automatique pour qu’il se lance à l’ouverture de Windows puis cliquez sur Démarrer pour lancer le service.
Pour vérifier votre config, allez sur votre serveur de backup et listez les fichiers qui seront synchronisés avec la commande
rsync -n 192.168.0.1::test
Aucune modification ne sera faite.
Coté rsnapshot, j’ai créé un répertoire différent pour ma machine windows, je vais l’appeler /media/backup/windows
Je crée un nouveau fichier de config en copiant celui existant
cp /etc/rsnapshot.conf /etc/rsnapshot_windows.conf
Je m’assure de modifier le répertoire de sauvegarde
snapshot_root /media/backup/windows
De commenter l’option de rsync à traver ssh
# Uncomment this to enable remote ssh backups over rsync. # #cmd_ssh /usr/bin/ssh
Adaptez vos intervalles de backup dans la section qui va bien
######################################### # BACKUP INTERVALS # # Must be unique and in ascending order # # i.e. hourly, daily, weekly, etc. # #########################################
Modifiez le lockfile si votre sauvegarde est indépendante des autres sauvegardes déjà présentent sur votre serveur.
lockfile /var/run/rsnapshot_windows.pid
Je conseillerai de décommenter l’option suivante et la mettre à 1. Cela permet que si votre PC est éteint, rsnapshot ne fera pas tourner son cycle de sauvegarde, ce qui évite de perdre de vieilles sauvegarde et de faire une copie pour rien.
sync_first 1
Et le point de backup
backup 192.168.0.1::test PC-MOI/
On retrouve l’adresse ip du PC windows à sauvegarder, le double “::“ qui permet de spécifier le module sur lequel on se connecte. On retrouve notre test et le nom du répertoire à destination de la sauvegarde.
Il ne reste plus qu’a configurer notre cron.d
vi /etc/cron.d/rsnapshot
Ajoutez les lignes suivantes suivant vos intervalles
0 20 * * * root /usr/bin/rsnapshot -c /etc/rsnapshot_windows.conf daily 30 19 1 * * root /usr/bin/rsnapshot -c /etc/rsnapshot_windows.conf monthly
Ici j’ai décidé de lancer le backup à 20h, l’option -c de rsnaphot permet de définir un fichier de config spécifique.
Et voila, il ne vous reste plus qu’à installer un petit server samba afin d’accéder facilement à vos backup depuis windows et vous voila tranquille ;)