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 [23/06/2013 16:47] gksam [Désinstallation] aptitude changé en apt |
doc:systeme:rsync:backup [07/07/2013 13:30] gksam [Créer le script de sauvegarde] |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
* 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 51: | Ligne 51: | ||
Les dossiers up-to-date contiennent la dernière sauvegarde. | Les dossiers up-to-date contiennent la dernière sauvegarde. | ||
- | Les dossiers increment contiennent eux les fichiers et dossiers qui ont été supprimé ou déplacé. À savoir que lors d'un déplacement | + | 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 | 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. | à l'espace disque. | ||
Ligne 91: | Ligne 91: | ||
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | note : | + | |
<file> | <file> | ||
#! /bin/sh | #! /bin/sh | ||
Ligne 103: | 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 108: | 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 | ||
- | # 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-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 | ||