Feature - Fonctionnalité #1787
Sauvegarde avec Rsnapshot
80%
Description
Cf MFR Loudeac, le client qui demande des sauvegardes incrémentales des répertoires de groupe et d'utilisateurs.
Vu dans #483 et #287 Rsnapshot serait une solution satisfaisante.
###################
Installation de Rsnapshot :
apt-get update && apt-get install rsnapshot
###################
Configuration, le fichier de conf est /etc/rsnapshot.conf
Sa configuration est expliquée ici : http://rsnapshot.org/howto/1.1/rsnapshot-HOWTO.fr.html
les lignes que j'ai modifiées sont :
config_version 1.2 snapshot_root /mnt/horizonrsnap/ no_create_root 1 cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_ssh /usr/bin/ssh cmd_logger /usr/bin/logger cmd_du /usr/bin/du cmd_postexec /usr/sbin/horizon-rsnapshot-post.sh interval hourly 6 interval daily 7 interval weekly 4 interval monthly 3 verbose 2 loglevel 3 logfile /var/log/rsnapshot lockfile /var/run/rsnapshot.pid rsync_long_args --stats --delete --numeric-ids --relative --delete-excluded backup /home/utilisateurs/ localhost/ backup /home/classes/ localhost/
ATTENTION : "cmd_preexec /usr/sbin/horizon-rsnapshot-backup.sh" ne laisse pas le temps au disque de monter ou renvoi une mauvaise info à Rsnapshot.
ATTENTION 2 : rsnapshot.conf ne veux que des tabulations et non des espaces ! NE PAS COPIER COLLER
Voir : http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=493177
j'ai donc contourné ce souci en modifiant /etc/cron.d/rsnapshot comme suit :
0 */6 * * 1-5 root /usr/sbin/horizon-rsnapshot-backup.sh && /usr/bin/rsnapshot hourly >> /tmp/sauvegarde.txt 2>&1 30 3 * * * root /usr/sbin/horizon-rsnapshot-backup.sh && /usr/bin/rsnapshot daily >> /tmp/sauvegarde.txt 2>&1 0 3 * * 1 root /usr/sbin/horizon-rsnapshot-backup.sh && /usr/bin/rsnapshot weekly >> /tmp/sauvegarde.txt 2>&1 30 2 1 * * root /usr/sbin/horizon-rsnapshot-backup.sh && /usr/bin/rsnapshot monthly >> /tmp/sauvegarde.txt 2>&1
Je laisse la config de test sur le serveur de l'atelier durant quelque temps avec une clef USB pour voir.
Historique
#1 Mis à jour par Stéphane Hays il y a environ 13 ans
- Temps estimé changé de 2.00 à 6.00
#2 Mis à jour par Stéphane Hays il y a environ 13 ans
- Description mis à jour (diff)
#3 Mis à jour par Stéphane Hays il y a environ 13 ans
- Description mis à jour (diff)
#4 Mis à jour par Stéphane Hays il y a environ 13 ans
Ajout dans /etc/abuledu/backup.conf :
MIRROR_RSNAP_EMAIL="admin-local@chez-le-client.fr"
Pour déterminer le support des sauvegardes, il faut un disque USB avec le label "horizonrsnap", à la méthode du miroir externe.
L'option "no_create_root 1" de rsnapshot.conf permet de ne pas créer le répertoire et donc de ne pas procéder à la sauvegarde si le disque n'est pas connecté (pas de sauvegarde d'un disque dans lui-même).
Pour le montage dans /media/horizonrsnap j'ai créé le fichier /etc/udev/rules.d/10-automount-horizonrsnap.rules qui détecte que si le disque USB est connecté avec le label "horizonrsnap", alors le monter dans /media/horizonrsnap.
# Montage automatique d'un support de sauvegarde USB dont le label est "horizonrsnap". KERNEL!="sd[a-z][0-9]", GOTO="horizonrsnap" # Import FS infos IMPORT{program}="/sbin/blkid -o udev -p %N" ENV{ID_FS_LABEL}=="", GOTO="horizonrsnap" # Global mount options ACTION=="add", ENV{mount_options}="relatime" # Filesystem-specific mount options # ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002" # Mount the device ACTION=="add", RUN+="/bin/mkdir -p /mnt/$env{ID_FS_LABEL}", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/$env{ID_FS_LABEL}" # Clean up after removal ACTION=="remove", ENV{ID_FS_LABEL}!="", RUN+="/bin/umount -l /mnt/$env{ID_FS_LABEL}", RUN+="/bin/rmdir /mnt/$env{ID_FS_LABEL}" # Exit LABEL="horizonrsnap"
Création des scripts /usr/sbin/horizon-rsnapshot-backup.sh et horizon-rsnapshot-post.sh.
plus dans un but d'y mettre des actions à faire que pour ce que ça fait actuellement.
rsnapshot-backup.sh :
touch /tmp/sauvegarde.txt chown root:root /tmp/sauvegarde.txt chmod 777 /tmp/sauvegarde.txt rm /tmp/sauvegarde.txt
rsnapshot-post.sh :
. /usr/lib/horizon/libhorizon-configuration.sh $@ cat /tmp/sauvegarde.txt | mail -s "[Sauvegarde des donnees] ${server_id} ${server_name}" "${MIRROR_RSNAP_EMAIL}"
A améliorer, ça fonctionne.
Pour le client, il lui faut connecter un disque avec le bon label et le reste est automatique.
#5 Mis à jour par Stéphane Hays il y a environ 13 ans
- % réalisé changé de 50 à 80
#6 Mis à jour par Eric Seigne il y a environ 13 ans
J'éviterais de passer par udev: j'ai peur que s'il branche le disque les utilisateurs (tx) vont le voir apparaître sur leur bureau ... mais c'est à vérifier, pour le reste ça me semble très très bien.
#7 Mis à jour par Stéphane Hays il y a environ 13 ans
- Description mis à jour (diff)
#8 Mis à jour par Stéphane Hays il y a environ 13 ans
- Description mis à jour (diff)
#9 Mis à jour par Stéphane Hays il y a environ 13 ans
- Description mis à jour (diff)
#10 Mis à jour par Eric Seigne il y a environ 13 ans
- Fichier horizon-rsnapshot-backup.sh ajouté
il manquait le script magique ...
#11 Mis à jour par Eric Seigne il y a presque 11 ans
- Statut changé de New - Nouveau à Fixed - Corrigé - Implémenté
#12 Mis à jour par Eric Seigne il y a environ 8 ans
- Version cible changé de 122 à 11.08.x