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 | ||
doc:systeme:rsync:backup [13/07/2013 09:40] gksam [Créer le script de sauvegarde] modification du paramètre Required-Stop |
doc:systeme:rsync:backup [23/08/2015 17:55] (Version actuelle) milou [rsync] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Sauvegarde incrémentielle avec rsync ====== | + | ====== rsync ====== |
- | Tags : {{tag>en-chantier à-tester à-placer}} | + | |
- | (//testé // - **gksam** 09-07-2013) | + | * Objet : rsync, la sauvegarde incrémentielle. |
+ | * Niveau requis : {{tag>débutant avisé}} | ||
+ | * Commentaires : //sauvegarder les dossiers et fichiers à l'arrêt d'une machine; envoiyer des mails locaux en cas d'erreur.// | ||
+ | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
+ | * Suivi :{{tag>à-tester}} | ||
+ | * Création par [[user>gksam]] le 22/06/2013 | ||
+ | * Testé par ... le ... | ||
+ | * Commentaires sur le forum : [[https://debian-facile.org/viewtopic.php?id=7061 | c'est ici]] ((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
- | 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 ! | ||
- | |||
- | * Objet : Sauvegarder les dossiers et fichiers à l'arrêt d'une machine. Envoie des mails locaux en cas d'erreur. | ||
- | |||
- | * Niveau requis : DÉBUTANT(E) | ||
- | |||
- | * 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> | + | <code> |
/mnt/sauvegarde/ | /mnt/sauvegarde/ | ||
├── machine1 | ├── machine1 | ||
Ligne 42: | Ligne 38: | ||
│ ├── root | │ ├── root | ||
│ └── var | │ └── var | ||
- | </file> | + | </code> |
- | L'architecture du dossier de sauvegarde est comme ci-dessus. | + | L'architecture du dossier de sauvegarde est décrite ci-dessus. |
- | 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é, déplacé ou modifié. À savoir que lors d'un déplacement | + | Les dossiers //increment// contiennent eux les fichiers et dossiers qui ont été supprimés, déplacés ou modifiés. À 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 56: | Ligne 52: | ||
===== 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, exécuter la commande suivante. | + | Pour le vérifier, exécuter la commande suivante. |
- | <code> | + | <code user>( dpkg --list 'rsync' 2>&1 > /dev/null ) && echo "rsync est installé" || echo "rsync n'est pas installé"</code> |
- | $ dpkg --list 'rsync' && echo "rsync est installé" || echo "rsync n'est pas installé" | + | |
- | </code> | + | |
===== Installer le paquet rsync ===== | ===== Installer le paquet rsync ===== | ||
- | Si le paquet rsync n'est pas installé, dans une console en root, exécuter la commande suivante. | + | Si le paquet rsync n'est pas installé, exécuter la commande suivante en tant que //root//. |
- | <code> | + | <code root>apt-get install rsync -y</code> |
- | # apt-get install rsync -y | + | |
- | </code> | + | |
===== Créer le script de sauvegarde ===== | ===== Créer le script de sauvegarde ===== | ||
- | ==== Créer le fichier rsync-backup.sh dans le dossier /etc/init.d ==== | + | ==== Créer le fichier rsync-backup dans le dossier /etc/init.d ==== |
Dans une console en root, exécuter la commande suivante. | Dans une console en root, exécuter la commande suivante. | ||
- | <code> | + | <code root>touch /etc/init.d/rsync-backup</code> |
- | # touch /etc/init.d/rsync-backup.sh | + | |
- | </code> | + | |
- | ==== Modifier les droits du fichier rsync-backup.sh pour qu'il devienne exécutable ==== | + | ==== Modifier les droits du fichier rsync-backup pour qu'il devienne exécutable ==== |
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>chmod 755 /etc/init.d/rsync-backup</code> |
- | # chmod 755 /etc/init.d/rsync-backup.sh | + | |
- | </code> | + | |
- | ==== Copier le contenu du fichier rsync-backup.sh ==== | + | ==== Copier le contenu du fichier rsync-backup ==== |
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 root>nano /etc/init.d/rsync-backup</code> |
- | # nano /etc/init.d/rsync-backup.sh | + | |
- | </code> | + | |
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | <file> | + | <code bash /etc/init.d/rsync-backup> |
#! /bin/sh | #! /bin/sh | ||
### BEGIN INIT INFO | ### BEGIN INIT INFO | ||
Ligne 120: | Ligne 106: | ||
# retourner 2 en cas d'échec | # retourner 2 en cas d'échec | ||
[ ! -w $point_montage ] && return 2; | [ ! -w $point_montage ] && return 2; | ||
+ | |||
+ | # si le dossier up-to-date n'existe pas alors créer le dossier up-to-date | ||
+ | [ ! -d $point_montage/$nom_hote/up-to-date ] && mkdir -p $point_montage/$nom_hote/up-to-date | ||
+ | |||
+ | # si le dossier increment n'existe pas alors créer le dossier increment | ||
+ | [ ! -d $point_montage/$nom_hote/increment ] && mkdir -p $point_montage/$nom_hote/increment | ||
# exécuter la commande rsync de sauvegarde | # exécuter la commande rsync de sauvegarde | ||
Ligne 130: | Ligne 122: | ||
# supprimer les anciennes sauvegarde | # supprimer les anciennes sauvegarde | ||
- | find $point_montage/$nom_hote/increment/* -maxdepth 0 -type d -ctime +$nb_jours -exec rm -rf {} \; || return 4 | + | find $point_montage/$nom_hote/increment/ -mindepth 1 -maxdepth 1 -type d -ctime +$nb_jours -exec rm -rf {} \; |
return 0 | return 0 | ||
Ligne 199: | Ligne 191: | ||
envoyer_mail "échec de la commande rsync" | envoyer_mail "échec de la commande rsync" | ||
exit 1 | exit 1 | ||
- | ;; | ||
- | |||
- | 4) log_end_msg 0 | ||
- | log_warning_msg "problème de suppression des increments" | ||
- | exit 0; | ||
;; | ;; | ||
esac | esac | ||
Ligne 213: | Ligne 200: | ||
;; | ;; | ||
esac | esac | ||
- | + | </code> | |
- | </file> | + | |
==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ||
- | + | <key>C-o</key> suivi de <key>C-x</key> | |
- | ctrl+o suivi de ctrl+x | + | |
===== Créer le script de configuration ===== | ===== Créer le script de configuration ===== | ||
Ligne 226: | Ligne 211: | ||
Dans une console en root, exécuter la commande suivante. | Dans une console en root, exécuter la commande suivante. | ||
- | <code> | + | <code root>touch /etc/rsync-backup.conf</code> |
- | # touch /etc/rsync-backup.conf | + | |
- | </code> | + | |
==== Modifier les droits du fichier rsync-backup.conf pour qu'il devienne exécutable ==== | ==== Modifier les droits du fichier rsync-backup.conf pour qu'il devienne exécutable ==== | ||
Ligne 234: | Ligne 217: | ||
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>chmod 644 /etc/rsync-backup.conf</code> |
- | # chmod 644 /etc/rsync-backup.conf | + | |
- | </code> | + | |
==== Copier le contenu du fichier rsync-backup.conf ==== | ==== Copier le contenu du fichier rsync-backup.conf ==== | ||
Ligne 242: | Ligne 223: | ||
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 root>nano /etc/rsync-backup.conf</code> |
- | # nano /etc/rsync-backup.conf | + | |
- | </code> | + | |
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | + | <code ini /etc/rsync-backup.conf> | |
- | <file> | + | |
# le point de montage doit être monté | # le point de montage doit être monté | ||
point_montage='/mnt/sauvegarde' | point_montage='/mnt/sauvegarde' | ||
nb_jours=10 | nb_jours=10 | ||
- | + | </code> | |
- | </file> | + | |
==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ||
- | + | <key>C-o</key> suivi de <key>C-x</key> | |
- | ctrl+o suivi de ctrl+x | + | |
===== Créer le fichier de sélection des dossiers et fichiers à sauvegarder ===== | ===== Créer le fichier de sélection des dossiers et fichiers à sauvegarder ===== | ||
Ligne 267: | Ligne 243: | ||
Dans une console en root, exécuter la commande suivante. | Dans une console en root, exécuter la commande suivante. | ||
- | <code> | + | <code root>touch /etc/rsync-backup-include</code> |
- | # touch /etc/rsync-backup-include | + | |
- | </code> | + | |
==== Modifier les droits du fichier rsync-backup-include ==== | ==== Modifier les droits du fichier rsync-backup-include ==== | ||
Ligne 275: | Ligne 249: | ||
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>chmod 644 /etc/rsync-backup-include</code> |
- | # chmod 644 /etc/rsync-backup-include | + | |
- | </code> | + | |
==== Copier le contenu du fichier rsync-backup-include ==== | ==== Copier le contenu du fichier rsync-backup-include ==== | ||
Ligne 283: | Ligne 255: | ||
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 root>nano /etc/rsync-backup-include</code> |
- | # nano /etc/rsync-backup-include | + | |
- | </code> | + | |
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | + | <code ini /etc/rsync-backup-include> | |
- | <file> | + | |
# 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. | # 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. | ||
# (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) | # (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) | ||
Ligne 365: | Ligne 334: | ||
# exclure tout (comme ça on est sûr) | # exclure tout (comme ça on est sûr) | ||
- ** | - ** | ||
- | + | </code> | |
- | </file> | + | |
pour plus d'informations sur cette partie, dans une console, exécuter la commande suivante. | pour plus d'informations sur cette partie, dans une console, exécuter la commande suivante. | ||
- | <code> | + | <code user>man rsync</code> |
- | $ man rsync | + | |
- | </code> | + | |
sections : FILTER RULES et INCLUDE/EXCLUDE PATTERN RULES | sections : FILTER RULES et INCLUDE/EXCLUDE PATTERN RULES | ||
Ligne 378: | Ligne 344: | ||
==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ==== Sauvegarder le fichier et quitter l'éditeur de texte ==== | ||
- | ctrl+o suivi de ctrl+x | + | <key>C-o</key> suivi de <key>C-x</key> |
===== Ajouter rotation du fichier de log ===== | ===== Ajouter rotation du fichier de log ===== | ||
Ligne 386: | Ligne 352: | ||
Dans une console en root, exécuter la commande suivante. | Dans une console en root, exécuter la commande suivante. | ||
- | <code> | + | <code root>touch /etc/logrotate.d/rsync-backup</code> |
- | # touch /etc/logrotate.d/rsync-backup | + | |
- | </code> | + | |
==== Modifier les droits du fichier rsync-backup ==== | ==== Modifier les droits du fichier rsync-backup ==== | ||
Ligne 394: | Ligne 358: | ||
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>chmod 644 /etc/logrotate.d/rsync-backup</code> |
- | # chmod 644 /etc/logrotate.d/rsync-backup | + | |
- | </code> | + | |
==== Copier le contenu du fichier rsync-backup ==== | ==== Copier le contenu du fichier rsync-backup ==== | ||
Ligne 402: | Ligne 364: | ||
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 root>nano /etc/logrotate.d/rsync-backup</code> |
- | # nano /etc/logrotate.d/rsync-backup | + | |
- | </code> | + | |
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | + | <code ini /etc/logrotate.d/rsync-backup> | |
- | <file> | + | |
/var/log/rsync-backup.log { | /var/log/rsync-backup.log { | ||
Ligne 418: | Ligne 377: | ||
weekly | weekly | ||
} | } | ||
- | + | </code> | |
- | </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 | + | <key>C-o</key> suivi de <key>C-x</key> |
- | ===== Ajouter le lancement automatique de la sauvegade (cron) ===== | + | ===== Ajouter le lancement automatique de la sauvegarde (cron) ===== |
==== Éditer le fichier contenant les cron ==== | ==== Éditer le fichier contenant les cron ==== | ||
Ligne 431: | Ligne 389: | ||
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 root>crontab -e</code> |
- | # crontab -e | + | |
- | </code> | + | |
==== Ajouter la tâche à exécuter ==== | ==== Ajouter la tâche à exécuter ==== | ||
Ligne 442: | Ligne 398: | ||
<code> | <code> | ||
- | 0 4 * * * invoke-rc.d rsync-backup.sh stop | + | 0 4 * * * /usr/sbin/invoke-rc.d rsync-backup stop |
</code> | </code> | ||
==== Sauvegarder le fichier et quitter l'éditeur de cron ==== | ==== Sauvegarder le fichier et quitter l'éditeur de cron ==== | ||
- | + | <key>C-o</key> suivi de <key>C-x</key> | |
- | ctrl+o suivi de ctrl+x | + | |
===== 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 ===== | ||
Ligne 455: | Ligne 410: | ||
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) | ||
- | <code> | + | <code root>update-rc.d rsync-backup stop 0</code> |
- | # update-rc.d rsync-backup.sh stop 0 | + | |
- | </code> | + | |
===== Utilisation ===== | ===== Utilisation ===== | ||
Ligne 467: | Ligne 420: | ||
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>invoke-rc.d rsync-backup stop</code> |
- | # invoke-rc.d rsync-backup.sh stop | + | |
- | </code> | + | |
==== Vérifier que la sauvegarde fonctionne ==== | ==== Vérifier que la sauvegarde fonctionne ==== | ||
Ligne 475: | Ligne 426: | ||
Dans une console root, exécuter la commande suivante. | Dans une console root, exécuter la commande suivante. | ||
- | <code> | + | <code root>grep 'rsync-backup:' /var/log/syslog</code> |
- | # grep 'rsync-backup:' /var/log/syslog | + | |
- | </code> | + | |
==== Afficher ce qui est sauvegardé ==== | ==== Afficher ce qui est sauvegardé ==== | ||
Dans une console, exécuter la commande suivante. | Dans une console, exécuter la commande suivante. | ||
- | <code> | + | <code user>cat /var/log/rsync-backup.log</code> |
- | cat /var/log/rsync-backup.log | + | |
- | </code> | + | |
===== Désinstallation ===== | ===== Désinstallation ===== | ||
Dans une console root, exécuter les commandes suivantes. | Dans une console root, exécuter les commandes suivantes. | ||
- | + | <code root> | |
- | <code> | + | update-rc.d rsync-backup remove</code> |
- | # update-rc.d rsync-backup.sh remove | + | (supprimer la tâche dans crontab) |
- | # supprimer la tâche dans crontab | + | <code root>crontab -e</code> |
- | # crontab -e | + | <code root>rm /etc/init.d/rsync-backup</code> |
- | # rm /etc/init.d/rsync-backup.sh | + | <code root>rm /etc/rsync-backup-include</code> |
- | # rm /etc/rsync-backup-include | + | <code root>rm /etc/rsync-backup.conf</code> |
- | # rm /etc/rsync-backup.conf | + | <code root>rm /etc/logrotate.d/rsync-backup</code> |
- | # rm /etc/logrotate.d/rsync-backup | + | <code root>rm /var/log/rsync-backup.log</code> |
- | # rm /var/log/rsync-backup.log | + | <code root>apt-get purge rsync -y |
- | # apt-get purge rsync -y | + | |
</code> | </code> |