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 →
Ci-dessous, les différences entre deux révisions de la page.
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 19:52] gksam [Créer le fichier de sélection des dossiers et fichiers à sauvegarder] |
doc:systeme:rsync:backup [07/07/2013 13:30] gksam [Créer le script de sauvegarde] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Sauvegarde incrémentielle avec rsync ====== | ====== Sauvegarde incrémentielle avec rsync ====== | ||
+ | Tags : {{tag>en-chantier à-tester à-placer}} | ||
- | (//testé - non testé// - **gksam** 20-06-2013) Le retour sur le forum est ici : [[//url// | Lien vers le forum concernant ce tuto]] | + | (//testé // - **gksam** 20-06-2013) |
+ | |||
+ | 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 : | ajout prévu : | ||
- | logrotate du fichier de log /var/log/rsync-backup.log | + | logrotate du fichier de log /var/log/rsync-backup.log & crontab de la sauvegarde |
- | crontab de la sauvegarde | + | |
+ | * Objet : Sauvegarder les dossiers et fichiers d'une machine | ||
- | * Objet : Sauvegarder les dossiers et fichier d'une machine | ||
* Niveau requis : DÉBUTANT(E) | * Niveau requis : DÉBUTANT(E) | ||
- | * Tags : {{tag>en-chantier à-tester à-placer}} | ||
- | * Commentaires : //Contexte d'utilisation du sujet du tuto. // | ||
- | * Débutant, à savoir : [[manuel:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
+ | * 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à !.]] :-) | ||
===== Introduction ===== | ===== Introduction ===== | ||
+ | <file> | ||
/mnt/sauvegarde/ | /mnt/sauvegarde/ | ||
- | ├── machine2 | + | ├── machine1 |
│ ├── increment | │ ├── increment | ||
│ │ ├── 130612 | │ │ ├── 130612 | ||
Ligne 40: | Ligne 45: | ||
│ ├── root | │ ├── root | ||
│ └── var | │ └── var | ||
+ | </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 ===== | ||
Ligne 45: | Ligne 59: | ||
===== 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 51: | Ligne 65: | ||
===== 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 59: | Ligne 73: | ||
==== 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 65: | Ligne 79: | ||
==== 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 71: | Ligne 85: | ||
==== 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 77: | Ligne 91: | ||
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | note : | + | |
<file> | <file> | ||
#! /bin/sh | #! /bin/sh | ||
Ligne 89: | Ligne 103: | ||
# 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 94: | Ligne 115: | ||
# 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 -q $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 0 ] ; 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-backup: fin 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 174: | Ligne 267: | ||
==== 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 180: | Ligne 273: | ||
==== 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 186: | Ligne 279: | ||
==== 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 266: | Ligne 359: | ||
<code> | <code> | ||
$ man rsync | $ man rsync | ||
- | <code> | + | </code> |
sections : FILTER RULES et INCLUDE/EXCLUDE PATTERN RULES | sections : FILTER RULES et INCLUDE/EXCLUDE PATTERN RULES | ||
Ligne 276: | Ligne 369: | ||
==== Installer le lien vers le script d'initialisation de type Système V ==== | ==== Installer le lien vers le script d'initialisation de type Système V ==== | ||
- | Dans une console root, éxécuter la commande suivante. | + | 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 286: | Ligne 379: | ||
===== 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 301: | Ligne 401: | ||
# 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> | ||
- |