logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
doc:systeme:rsync:backup [07/07/2013 13:24]
gksam [Introduction]
doc:systeme:rsync:backup [13/07/2013 09:40]
gksam [Créer le script de sauvegarde] modification du paramètre Required-Stop
Ligne 2: Ligne 2:
 Tags : {{tag>​en-chantier à-tester à-placer}} Tags : {{tag>​en-chantier à-tester à-placer}}
  
-(//testé // - **gksam** ​20-06-2013)+(//testé // - **gksam** ​09-07-2013)
  
 Le retour sur le forum est ici : [[http://​debian-facile.org/​viewtopic.php?​id=7061 | Lien vers le forum concernant ce tuto]] Le retour sur le forum est ici : [[http://​debian-facile.org/​viewtopic.php?​id=7061 | Lien vers le forum concernant ce tuto]]
    ​N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !    ​N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
  
-ajout prévu : +* Objet : Sauvegarder les dossiers et fichiers ​à l'​arrêt ​d'une machine. Envoie des mails locaux en cas d'​erreur.
-logrotate du fichier de log /​var/​log/​rsync-backup.log & crontab de la sauvegarde +
- +
-* Objet : Sauvegarder les dossiers et fichiers d'une machine+
  
 * Niveau requis : DÉBUTANT(E) * Niveau requis : DÉBUTANT(E)
Ligne 91: Ligne 88:
  
 Copier le contenu suivant. Copier le contenu suivant.
-note : +
 <​file>​ <​file>​
 #! /bin/sh #! /bin/sh
Ligne 97: Ligne 94:
 # Provides: ​         rsync-backup # Provides: ​         rsync-backup
 # Required-Start:​ # Required-Start:​
-# Required-Stop: ​    $all+# Required-Stop: ​    $local_fs $network $named $remote_fs $syslog $time
 # Should-Stop:​ # Should-Stop:​
 # Default-Start:​ # Default-Start:​
Ligne 103: Ligne 100:
 # Short-Description:​ Sauvegarde du système. # Short-Description:​ Sauvegarde du système.
 ### END INIT INFO ### END INIT INFO
 +
 +envoyer_mail () {
 +
 + echo "​$1"​ | mail -s "​[error] [`hostname`] [$NAME]"​ $USER
 +
 + return 0
 +}
  
 do_stop () { do_stop () {
Ligne 108: Ligne 112:
  # initialiser les variables  # initialiser les variables
  local nom_hote=`hostname`  local nom_hote=`hostname`
- local point_montage='/​mnt/​sauvegarde'​ 
- local local nb_jours=10 
- 
- logger "​rsync-backup:​ début de la sauvegarde de la machine"​ 
- echo "​rsync-backup:​ sauvegarde de la machine..."​ 
  
  # vérifier que le point de montage est monté  # vérifier que le point de montage est monté
- /​bin/​mountpoint -q $point_montage+ # si le point de montage est un dossier et qu'il est monté alors continuer sinon retourner 1 
 + [ -d $point_montage ] && ( /​bin/​mountpoint -q $point_montage ​|| return 1 )
  
- # si le point de montage ​n'est pas monté alors +tester ​si l'on peut écrire dans le dossier du point de montage 
- if $? -ne 0 ] ; then+ # retourner 2 en cas d'échec 
 +-w $point_montage ​&& return 2;
  
- monter le point de montage + exécuter la commande rsync de sauvegarde 
- /bin/mount $point_montage+ /usr/bin/rsync --human-readable \ 
 + --recursive --links --perms --times --delete-after \ 
 + --log-file=/​var/​log/​rsync-backup.log \ 
 + --backup --backup-dir=$point_montage/​$nom_hote/​increment/​`date +%y%m%d`/ \ 
 + --exclude-from=$rsync_backup_include --exclude='​**'​ \ 
 + / $point_montage/​$nom_hote/​up-to-date/​ || return 3
  
- vérifier que le point de montage est monté + supprimer les anciennes sauvegarde 
- /bin/mountpoint ​-$point_montage+ find $point_montage/$nom_hote/increment/​* ​-maxdepth 0 -type d -ctime +$nb_jours -exec rm -rf {} \; || return 4
  
- # si le point de montage n'est toujours pas monté alors logger l'​erreur et sortir + return ​0 
- if [ $? -ne ] ; then+}
  
- logger ​"​rsync-backup: point de montage ​$point_montage n'est pas monté"​ +PATH=/​sbin:/​usr/​sbin:/​bin:/​usr/​bin 
- logger "rsync-backup: sauvegarde du système impossible"​ +DESC="Description of the service"​ 
- echo "​[err] ​rsync-backup: sauvegarde impossible. problème de point de montage"​ +NAME=rsync-backup 
- return 1 +SCRIPTNAME=/​etc/​init.d/​$NAME 
- fi +rsync_backup_conf='/​etc/​rsync-backup.conf' 
- fi+rsync_backup_include='/​etc/​rsync-backup-include'​ 
 +point_montage=''​ 
 +nb_jours=30
  
- exécuter ​la commande de sauvegarde +lire la librairie init-functions 
- logger "rsync-backup: point de montage ok. execution de la commande de sauvegarde."​ +. /lib/lsb/init-functions
- /​usr/​bin/​rsync --human-readable \ +
- --recursive --links --perms --times --delete-after \ +
- --log-file=/​var/​log/​rsync-backup.log \ +
- --backup --backup-dir=../increment/`date +%y%m%d`+
- --exclude-from=/​etc/​gk-backup-include --exclude='​**'​ \ +
- / $point_montage/​$nom_hote/​up-to-date/​ && logger "​rsync-backup:​ sauvegarde effectuée."​+
  
- supprimer les anciennes sauvegarde (10 jours) +lire le fichier ​rsync-backup.conf s'il est lisible 
- logger "rsync-backup: suppression des anciennes sauvegarde"​+# exit 1 en cas d'​échec 
 +if [ -r $rsync_backup_conf ] ; then
  
- # suppimer les dossiers dans le dossier increment dont la date est supperieur ​ + . $rsync_backup_conf 
- find $point_montage/​$nom_hote/​increment/​* -maxdepth 0 -type d -ctime +$nb_jours -exec rm -rf {} \;+else
  
- logger ​"rsync-backupfin de la sauvegarde de la machine" + log_failure_msg $NAME": " "le fichier $rsync_backup_conf n'est pas lisible"
- echo "[ok] rsync-backup:​ sauvegarde terminée."+
  
- return 0 + envoyer_mail "le fichier $rsync_backup_conf n'est pas lisible"​ 
-}+ 
 + exit 1 
 +fi 
 + 
 +# tester si le fichier rsync-backup-include est lisible 
 +# exit 1 en cas d'​échec 
 +if [ ! -r $rsync_backup_include ] ; then 
 + 
 + log_failure_msg $NAME":​ " "le fichier $rsync_backup_include n'est pas lisible"​ 
 + 
 + envoyer_mail "le fichier $rsync_backup_include n'est pas lisible"​ 
 + 
 + exit 1 
 +fi
  
 case "​$1"​ in case "​$1"​ in
-  ​stop) + 
- do_stop +  stop) 
- exit $? +   log_daemon_msg $NAME "​sauvegarde de la machine..."​ 
- ;; + 
-  *) + # exécuter la méthode ​do_stop 
- echo "​Usage:​ $0 stop" >&​2 + do_stop 
- exit 3 + 
- ;;+ # en fonction du résultat afficher le message de fin 
 + case "$?" in 
 + 0) log_end_msg 0 
 + exit 0 
 + ;; 
 + 
 + 1) log_end_msg 1 
 + envoyer_mail "​impossible de monter le point de montage $point_montage"​ 
 + exit 1 
 + ;; 
 + 
 + 2) log_end_msg 1 
 + envoyer_mail "ne peut pas écrire dans dossier du point de montage $point_montage"​ 
 + exit 1 
 + ;; 
 + 
 + 3) log_end_msg 1 
 + envoyer_mail "​échec de la commande rsync"​ 
 + exit 1 
 + ;; 
 + 
 + 4) log_end_msg 0 
 + log_warning_msg "​problème de suppression des increments"​ 
 + exit 0; 
 + ;; 
 + esac 
 + ;; 
 + 
 + *) 
 + echo "​Usage:​ $0 stop" >&​2 
 + exit 3 
 + ;;
 esac esac
  
 </​file>​ </​file>​
  
-==== Modifier les variables pour qu'elle corresponde à votre système ​====+==== Sauvegarder le fichier et quitter l'éditeur de texte ====
  
-cette variable permet ​de sélectionner le point de montage où sera copier la sauvegarde+ctrl+o suivi de ctrl+x
  
-local point_montage='/​mnt/​sauvegarde'​+===== Créer le script de configuration =====
  
-cette variable permet de choisir combien de jours il faut garder les incréments+==== Créer le fichier rsync-backup.conf dans le dossier /etc/ ====
  
-local local nb_jours=10+Dans une console en root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# touch /​etc/​rsync-backup.conf 
 +</​code>​ 
 + 
 +==== Modifier les droits du fichier rsync-backup.conf pour qu'il devienne exécutable ==== 
 + 
 +Dans une console root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# chmod 644 /​etc/​rsync-backup.conf 
 +</​code>​ 
 + 
 +==== Copier le contenu du fichier rsync-backup.conf ==== 
 + 
 +Pour éditer le fichier, dans une console en root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# nano /​etc/​rsync-backup.conf 
 +</​code>​ 
 + 
 +Copier le contenu suivant. 
 + 
 +<​file>​ 
 +# le point de montage doit être monté 
 +point_montage='/​mnt/​sauvegarde'​ 
 +nb_jours=10 
 + 
 +</​file>​
  
 ==== Sauvegarder le fichier et quitter l'​éditeur de texte ==== ==== Sauvegarder le fichier et quitter l'​éditeur de texte ====
 +
 ctrl+o suivi de ctrl+x ctrl+o suivi de ctrl+x
  
Ligne 188: Ligne 264:
  
 ==== Créer le fichier rsync-backup-include dans le dossier /etc/ ==== ==== Créer le fichier rsync-backup-include dans le dossier /etc/ ====
 +
 Dans une console en root, exécuter la commande suivante. Dans une console en root, exécuter la commande suivante.
 +
 <​code>​ <​code>​
 # touch /​etc/​rsync-backup-include # touch /​etc/​rsync-backup-include
Ligne 194: Ligne 272:
  
 ==== Modifier les droits du fichier rsync-backup-include ==== ==== Modifier les droits du fichier rsync-backup-include ====
 +
 Dans une console root, exécuter la commande suivante. Dans une console root, exécuter la commande suivante.
 +
 <​code>​ <​code>​
 # chmod 644 /​etc/​rsync-backup-include # chmod 644 /​etc/​rsync-backup-include
Ligne 200: Ligne 280:
  
 ==== Copier le contenu du fichier rsync-backup-include ==== ==== Copier le contenu du fichier rsync-backup-include ====
 +
 Pour éditer le fichier, dans une console en root, exécuter la commande suivante. Pour éditer le fichier, dans une console en root, exécuter la commande suivante.
 +
 <​code>​ <​code>​
 # nano /​etc/​rsync-backup-include # nano /​etc/​rsync-backup-include
Ligne 206: Ligne 288:
  
 Copier le contenu suivant. Copier le contenu suivant.
-note : +
 <​file>​ <​file>​
-- /bin+# La commande rsync utitilisée inclue / (root) et exclue tout. Cela ne sauvegarde rien. Le fichier rsync-backup-include permet d'​inclure ce que l'on veut sauvegarder. 
-- /boot+# (note : pour plus d'​information voir la page de manuel de rync dans les sections : FILTER RULES, INCLUDE/EXCLUDE PATTERN RULES, MERGE-FILE FILTER RULES) 
-- /dev/+# à la visite d'un dossier, penser à exclure ce que l'on ne veut pas sauvegarder avant de mettre la règle contenant les * 
 +# + [pattern] inclu un motif 
 +# - [pattern] exclu un motif 
 +# '​*'​ remplace tout et s'​arrête au premier slash. 
 +# '​**'​ remplace tout, incluant les slashs. 
 +# + /dossier/ visite un dossier mais ne sauvegarde rien 
 +# + /dossier/* sauvegarde tous les fichiers et dossiers mais de manière non récursive (les dossiers seront vides) 
 +# + /dossier/** sauvegarde tous le contenu du dossier récursivement 
 + 
 +# exclure les fichiers 
 +- /initrd.img 
 +/vmlinuz 
 +#.git/ 
 +#- .cvs/ 
 + 
 +# sauvegarder le contenue du dossier ​/etc
 + /etc/ + /etc/
 + /etc/** + /etc/**
 +
 +# sauvegarde tous les dossiers utilisateurs
 + /home/ + /home/
-#- /home/*/Bureau+/home/*/ 
-#- /​home/​*/​Documents/​ +exclure les dossiers et fichiers que l'on ne veut pas sauvegarder dans les dossiers utilisateurs
-#- /​home/​*/​Images/​ +
-#- /​home/​*/​Modèles/​+
 - /​home/​*/​Musique/​ - /​home/​*/​Musique/​
 - /​home/​*/​Public/​ - /​home/​*/​Public/​
Ligne 239: Ligne 336:
 - /​home/​*/​.macromedia/​ - /​home/​*/​.macromedia/​
 - /​home/​*/​.mozilla/​ - /​home/​*/​.mozilla/​
 +- /​home/​*/​.pulse/​
 - /​home/​*/​.pulse-cookie - /​home/​*/​.pulse-cookie
 - /​home/​*/​.recently-used - /​home/​*/​.recently-used
Ligne 246: Ligne 344:
 - /​home/​*/​.xsession-errors - /​home/​*/​.xsession-errors
 - /​home/​*/​.xsession-errors.old - /​home/​*/​.xsession-errors.old
-+ /home/*+# sauvegarder tout ce qui n'a pas était exclue dans les dossiers utilisateurs
 + /home/*/** + /home/*/**
-- /initrd.img + 
-- /lib/ +# sauvegarder le dossier de l'​utilisateur root
-- lost+found/​ +
-- /media/ +
-- /opt/ +
-- /proc/+
 + /root/ + /root/
 + /root/** + /root/**
-- /run/ + 
-- /sbin/ +# sauvegarder le dossier cron
-- /selinux/ +
-- /srv/ +
-- /sys/ +
-- /tmp/ +
-- /usr/+
 + /var/ + /var/
-+ /var/mail/ 
-+ /​var/​mail/​** 
 + /var/spool/ + /var/spool/
 + /​var/​spool/​cron/​ + /​var/​spool/​cron/​
 + /​var/​spool/​cron/​** + /​var/​spool/​cron/​**
-/vmlinuz + 
-- *.cvs +# sauvegarder le dossier mail 
-- .git+#+ /var
-- *~+#+ /var/spool/ 
 ++ /​var/​spool/​mail/ 
 ++ /​var/​spool/​mail/​** 
 + 
 +# exclure tout (comme ça on est sûr) 
 +- **
  
 </​file>​ </​file>​
Ligne 284: Ligne 376:
 sections : FILTER RULES et INCLUDE/​EXCLUDE PATTERN RULES sections : FILTER RULES et INCLUDE/​EXCLUDE PATTERN RULES
  
-Cette partie est la plus compliquéeEn grosmettre un (commenter ​une ligne permet de sauvegarder un dossier et ses sous dossiers.+==== Sauvegarder le fichier et quitter l'​éditeur de texte ==== 
 + 
 +ctrl+o suivi de ctrl+x 
 + 
 +===== Ajouter rotation du fichier de log ===== 
 + 
 +==== Créer le fichier rsync-backup dans le dossier /​etc/​logrotate.d ==== 
 + 
 +Dans une console en root, exécuter ​la commande suivante. 
 + 
 +<​code>​ 
 +# touch /​etc/​logrotate.d/​rsync-backup 
 +</​code>​ 
 + 
 +==== Modifier les droits du fichier rsync-backup ==== 
 + 
 +Dans une console rootexécuter la commande suivante. 
 + 
 +<​code>​ 
 +chmod 644 /​etc/​logrotate.d/​rsync-backup 
 +</​code>​ 
 + 
 +==== Copier le contenu du fichier rsync-backup ==== 
 + 
 +Pour éditer le fichier, dans une console en root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# nano /​etc/​logrotate.d/​rsync-backup 
 +</​code>​ 
 + 
 +Copier le contenu suivant. 
 + 
 +<​file>​ 
 +/​var/​log/​rsync-backup.log { 
 + 
 + compress 
 + copytruncate 
 + delaycompress 
 + missingok 
 + notifempty 
 + weekly 
 +
 + 
 +</​file>​
  
 ==== Sauvegarder le fichier et quitter l'​éditeur de texte ==== ==== Sauvegarder le fichier et quitter l'​éditeur de texte ====
 +
 ctrl+o suivi de ctrl+x ctrl+o suivi de ctrl+x
  
-==== Installer le lien vers le script d'​initialisation de type Système V ====+===== Ajouter le lancement automatique de la sauvegade (cron) ===== 
 + 
 +==== Éditer le fichier contenant les cron ==== 
 + 
 +Pour éditer le fichier, dans une console en root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# crontab -e 
 +</​code>​ 
 + 
 +==== Ajouter la tâche à exécuter ==== 
 + 
 +La ligne suivante et à copier puis à coller dans l'​éditeur de de crons. 
 + 
 +note : la sauvegarde sera lancé à 4H00 du matin. (on est rarement derrière son pc à 4H00 et cela évite les problèmes de changements d'​heures) 
 + 
 +<​code>​ 
 +0 4 * * * invoke-rc.d rsync-backup.sh stop 
 +</​code>​ 
 + 
 +==== Sauvegarder le fichier et quitter l'​éditeur de cron ==== 
 + 
 +ctrl+o suivi de ctrl+x 
 + 
 +===== Installer le lien vers le script d'​initialisation de type Système V ====
 Dans une console root, exécuter la commande suivante. Dans une console root, exécuter la commande suivante.
  
Ligne 295: Ligne 456:
  
 <​code>​ <​code>​
-# update-rc.d rsync-backup stop 0+# update-rc.d rsync-backup.sh stop 0
 </​code>​ </​code>​
  
 ===== Utilisation ===== ===== Utilisation =====
  
-voilà aux prochains arrêts la machine sera sauvegardée+Aux prochains arrêts ​ou si la machine n'est pas arrêtée, tous les jours à 4H00 du matin, ​la machine sera sauvegardée
 + 
 +==== Exécuter une sauvegarde manuellement ==== 
 + 
 +Dans une console root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +# invoke-rc.d rsync-backup.sh stop 
 +</​code>​
  
 ==== Vérifier que la sauvegarde fonctionne ==== ==== Vérifier que la sauvegarde fonctionne ====
 +
 Dans une console root, exécuter la commande suivante. Dans une console root, exécuter la commande suivante.
  
Ligne 316: Ligne 486:
  
 ===== Désinstallation ===== ===== Désinstallation =====
 +
 Dans une console root, exécuter les commandes suivantes. Dans une console root, exécuter les commandes suivantes.
 +
 <​code>​ <​code>​
-# update-rc.d rsync-backup remove +# update-rc.d rsync-backup.sh remove 
-# rm [[/​etc/​init.d/​rsync-backup.sh]] +# supprimer la tâche dans crontab 
-# rm [[/​etc/​rsync-backup-include]]+# crontab -e 
 +# rm /​etc/​init.d/​rsync-backup.sh 
 +# rm /​etc/​rsync-backup-include 
 +# rm /​etc/​rsync-backup.conf 
 +# rm /​etc/​logrotate.d/​rsync-backup
 # rm /​var/​log/​rsync-backup.log # rm /​var/​log/​rsync-backup.log
 # apt-get purge rsync -y # apt-get purge rsync -y
 </​code>​ </​code>​
doc/systeme/rsync/backup.txt · Dernière modification: 23/08/2015 17:55 par milou

Pied de page des forums

Propulsé par FluxBB