Outils personnels
Vous êtes ici : Accueil Blog Rsnaphot
Navigation
 
Actions sur le document

Rsnaphot

Filed Under:

rsnaphot permet de faire des sauvegardes incrémentales sur disque à l'aide de rsync. En utilisant les liens durs, rsnapshot créé l'illusion de l'existence de multiples sauvegardes complètes, tout en n'occupant que la place d'une seule plus les différences.

Installation par

yum install rsnapshot
Dans le fichier /etc/rsnapshot.conf
snapshot_root   /home/kwa29/Backup/
cmd_ssh /usr/bin/ssh
# On conserve 7 sauvegardes journaliéres et 4 hebdomadaires
interval        daily   7
interval        weekly  4
ssh_args        -o BatchMode=yes
exclude_file    /home/kwa29/exclude_dir_rsnapshot
backup  root@molene:/           molene/
backup  root@molene:/etc/       molene/etc/
backup  root@molene:/home/      molene/home/
backup  root@molene:/var/log/   molene/var/log/
backup  root@molene:/var/lib/   molene/var/lib/
backup  root@molene:/root/      molene/root/
Maintenant que votre fichier de configuration est fait, il est temps de faire en sorte que rsnapshot soit lancé par cron. En tant que l'utilisateur root, editez le crontab de root en tapant :
crontab -e

Entrer les informations suivantes dans le crontab de root :

# Backup Serveur
0 */4 * * *       /usr/bin/rsnapshot daily
30 23 * * *       /usr/bin/rsnapshot weekly

En règle générale, c'est une bonne idée de programmer les intervalles les plus larges un peu avant les moins larges. Par exemple, dans le crontab ci-dessus, notez que weekly s'execute 30 minutes avant daily. Ca permet d'éviter des interbloquages qui pourraient survenir si weekly essaye de s'executer avant que daily ait terminé.

Création du script /root/validate-rsync
#!/bin/sh

case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
echo "Rejected"
;;
*\{*)
echo "Rejected"
;;
*\;*)
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac

Dans le fichier /home/kwa29/.ssh/config du serveur

Host serveur
HostName serveur.kwa29.com
Port 22
User root
IdentityFile /root/.ssh/serveur.id_dsa
Génération de clés sur le serveur pour root
ssh-keygen -t dsa -b 1024
chmod 600 config
scp serveur.id_dsa.pub serveur:/root/.ssh/
cat serveur.id_dsa.pub > authorized_keys
Modification de chaque fichier authorized_keys
from="11.22.33.44.55",command="/root/validate-rsync" ssh-dss AAAAB3NzaC1kc3MAAACBAKUwjPKJTkwNM5[...]
permet de ne pas donner le droit à root d'utiliser ssh mais par contre qu'il puisse lancer des commandes distantes.
Dans le fichier /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
ServerKeyBits 1024
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
PermitRootLogin=forced-commands-only
RhostsRSAAuthentication no
HostbasedAuthentication no
IgnoreUserKnownHosts yes
IgnoreRhosts yes
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
X11Forwarding no
Dans le fichier /etc/ssh/ssh_config  
ForwardX11Trusted no
# Send locale-related environment variables
        SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
        SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
        SendEnv LC_IDENTIFICATION LC_ALL

Les répertoires exclus sont dans le fichier /home/kwa29/exclude_dir_rsnapshot :

/home/kwa29
/bin
/boot
/dev
/lib
/lost+found
/media
/misc
/mnt
/net
/opt
/proc
/sbin
/selinux
/srv
/sys
/tmp
/usr
/var