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 [22/06/2013 20:26]
gksam [Sauvegarde incrémentielle avec rsync]
doc:systeme:rsync:backup [07/07/2013 13:40]
gksam [Sauvegarde incrémentielle avec rsync]
Ligne 2: Ligne 2:
 Tags : {{tag>​en-chantier à-tester à-placer}} Tags : {{tag>​en-chantier à-tester à-placer}}
  
-(//testé // - **gksam** ​20-06-2013)+(//testé // - **gksam** ​07-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)
  
-* Commentaires : le but est de sauvegarder ​ça machine sans y penser.+* Commentaires : le but est de sauvegarder ​sa machine sans y penser.
  
 * Débutant, à savoir : [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) * Débutant, à savoir : [[manuel:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
Ligne 21: Ligne 18:
 <​file>​ <​file>​
 /​mnt/​sauvegarde/​ /​mnt/​sauvegarde/​
-├── ​machine2+├── ​machine1
 │   ​├── increment │   ​├── increment
 │   ​│ ​  ​├── 130612 │   ​│ ​  ​├── 130612
Ligne 46: Ligne 43:
 │       ​└── var │       ​└── var
 </​file>​ </​file>​
 +
 +L'​architecture du dossier de sauvegarde est comme ci-dessus.
 +
 +Les dossiers up-to-date contiennent la dernière sauvegarde.
 +
 +Les dossiers increment contiennent eux les fichiers et dossiers qui ont été supprimé, déplacé ou modifié. À savoir que lors d'un déplacement
 +le dossier sera copié deux fois. Une fois dans le dossier increment et sera retranféré dans le dossier up-to-date. donc, attention
 +à l'​espace disque.
 +
 ===== Installation ===== ===== Installation =====
  
 ===== Vérifier l'​état du paquet rsync ===== ===== Vérifier l'​état du paquet rsync =====
 Pour que la sauvegarde fonctionne, il faut que le paquet [[http://​packages.debian.org/​stable/​rsync|rsync]] soit installé dans le système. Pour que la sauvegarde fonctionne, il faut que le paquet [[http://​packages.debian.org/​stable/​rsync|rsync]] soit installé dans le système.
-Donc, dans une console, ​éxécuter ​la commande suivante.+Donc, dans une console, ​exécuter ​la commande suivante.
 <​code>​ <​code>​
 $ dpkg --list '​rsync'​ && echo "rsync est installé"​ || echo "rsync n'est pas installé"​ $ dpkg --list '​rsync'​ && echo "rsync est installé"​ || echo "rsync n'est pas installé"​
Ligne 56: Ligne 62:
  
 ===== Installer le paquet rsync ===== ===== Installer le paquet rsync =====
-Si le paquet rsync n'est pas installé, dans une console en root, éxécuter ​la commande suivante.+Si le paquet rsync n'est pas installé, dans une console en root, exécuter ​la commande suivante.
 <​code>​ <​code>​
-aptitude ​install rsync -y+apt-get ​install rsync -y
 </​code>​ </​code>​
  
Ligne 64: Ligne 70:
  
 ==== Créer le fichier rsync-backup.sh dans le dossier /etc/init.d ==== ==== Créer le fichier rsync-backup.sh dans le dossier /etc/init.d ====
-Dans une console en root, éxécuter ​la commande suivante.+Dans une console en root, exécuter ​la commande suivante.
 <​code>​ <​code>​
 # touch /​etc/​init.d/​rsync-backup.sh # touch /​etc/​init.d/​rsync-backup.sh
Ligne 70: Ligne 76:
  
 ==== Modifier les droits du fichier rsync-backup.sh pour qu'il devienne exécutable ==== ==== Modifier les droits du fichier rsync-backup.sh pour qu'il devienne exécutable ====
-Dans une console root, éxécuter ​la commande suivante.+Dans une console root, exécuter ​la commande suivante.
 <​code>​ <​code>​
 # chmod 755 /​etc/​init.d/​rsync-backup.sh # chmod 755 /​etc/​init.d/​rsync-backup.sh
Ligne 76: Ligne 82:
  
 ==== Copier le contenu du fichier rsync-backup.sh ==== ==== Copier le contenu du fichier rsync-backup.sh ====
-Pour éditer le fichier, dans une console en root, éxécuter ​la commande suivante.+Pour éditer le fichier, dans une console en root, exécuter ​la commande suivante.
 <​code>​ <​code>​
 # nano /​etc/​init.d/​rsync-backup.sh # nano /​etc/​init.d/​rsync-backup.sh
Ligne 82: Ligne 88:
  
 Copier le contenu suivant. Copier le contenu suivant.
-note : +
 <​file>​ <​file>​
 #! /bin/sh #! /bin/sh
Ligne 94: 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 99: 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
  
- éxécuter ​la commande de sauvegarde +lire la librairie init-functions 
- logger "rsync-backup: point de montage ok. éxecution 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 179: 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, éxé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 185: Ligne 272:
  
 ==== Modifier les droits du fichier rsync-backup-include ==== ==== Modifier les droits du fichier rsync-backup-include ====
-Dans une console root, éxé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 191: 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, éxé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 197: 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 230: 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 237: 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 271: Ligne 372:
 <​code>​ <​code>​
 $ man rsync $ man rsync
-<​code>​+</code>
  
 sections : FILTER RULES et INCLUDE/​EXCLUDE PATTERN RULES sections : FILTER RULES et INCLUDE/​EXCLUDE PATTERN RULES
- 
-Cette partie est la plus compliquée. En gros, mettre un # (commenter une ligne permet de sauvegarder un dossier et ses sous dossiers. 
  
 ==== 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 rotation du fichier de log ===== 
-Dans une console root, éxécuter ​la commande suivante.+ 
 +==== 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 root, exé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>​ 
 + 
 +===== Installer le lien vers le script d'​initialisation de type Système V ====
 + 
 +Dans une console root, exécuter ​la commande suivante.
  
 note : ne pas s'​inquiéter du message : update-rc.d:​ warning: ​ stop runlevel arguments (none) do not match rsync-backup Default-Stop values (0) note : ne pas s'​inquiéter du message : update-rc.d:​ warning: ​ stop runlevel arguments (none) do not match rsync-backup Default-Stop values (0)
Ligne 291: Ligne 433:
 ===== Utilisation ===== ===== Utilisation =====
  
-voilà ​au prochain arrêt ​la machine sera sauvegardée+voilà ​aux prochains arrêts ​la machine sera sauvegardée
  
 ==== Vérifier que la sauvegarde fonctionne ==== ==== Vérifier que la sauvegarde fonctionne ====
-sudo grep '​rsync-backup:'​ /​var/​log/​syslog+Dans une console root, exécuter la commande suivante. 
 + 
 +<​code>​ 
 +grep '​rsync-backup:'​ /​var/​log/​syslog 
 +</​code>​
  
 ==== Afficher ce qui est sauvegardé ==== ==== Afficher ce qui est sauvegardé ====
-cat [[/​var/​log/​rsync-backup.log]]+Dans une console, exécuter la commande suivante. 
 +<​code>​ 
 +cat /​var/​log/​rsync-backup.log 
 +</​code>​
  
 ===== Désinstallation ===== ===== Désinstallation =====
-Dans une console root, éxé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 remove
Ligne 306: Ligne 455:
 # rm [[/​etc/​rsync-backup-include]] # rm [[/​etc/​rsync-backup-include]]
 # rm /​var/​log/​rsync-backup.log # rm /​var/​log/​rsync-backup.log
-aptitude --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