Projet

Général

Profil

Feature - Fonctionnalité #1787

Sauvegarde avec Rsnapshot

Ajouté par Stéphane Hays il y a environ 9 ans. Mis à jour il y a environ 4 ans.

Statut:
Fixed - Corrigé - Implémenté
Priorité:
Normale
Assigné à:
Stéphane Hays
Version cible:
Horizon - 11.08.x
Début:
14/11/2011
Echéance:
% réalisé:

80%

Temps estimé:
6.00 h

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.

horizon-rsnapshot-backup.sh Magnifier (115 octets) Eric Seigne, 14/12/2011 17:39

Historique

#1 Mis à jour par Stéphane Hays il y a environ 9 ans

  • Temps estimé changé de 2.00 à 6.00

#2 Mis à jour par Stéphane Hays il y a environ 9 ans

  • Description mis à jour (diff)

#3 Mis à jour par Stéphane Hays il y a environ 9 ans

  • Description mis à jour (diff)

#4 Mis à jour par Stéphane Hays il y a environ 9 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 9 ans

  • % réalisé changé de 50 à 80

#6 Mis à jour par Eric Seigne il y a environ 9 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 9 ans

  • Description mis à jour (diff)

#8 Mis à jour par Stéphane Hays il y a environ 9 ans

  • Description mis à jour (diff)

#9 Mis à jour par Stéphane Hays il y a environ 9 ans

  • Description mis à jour (diff)

#10 Mis à jour par Eric Seigne il y a presque 9 ans

il manquait le script magique ...

#11 Mis à jour par Eric Seigne il y a presque 7 ans

  • Statut changé de New - Nouveau à Fixed - Corrigé - Implémenté

#12 Mis à jour par Eric Seigne il y a environ 4 ans

  • Version cible changé de 122 à 11.08.x

Formats disponibles : Atom PDF

Redmine Appliance - Powered by TurnKey Linux