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 [07/07/2013 13:30] gksam [Créer le script de sauvegarde] |
doc:systeme:rsync:backup [23/08/2015 17:51] milou [Ajouter rotation du fichier de log] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Sauvegarde incrémentielle avec rsync ====== | + | ====== rsync ====== |
- | Tags : {{tag>en-chantier à-tester à-placer}} | + | |
- | (//testé // - **gksam** 20-06-2013) | + | * Objet : rsync, la sauvegarde incrémentielle. |
+ | * Niveau requis : {{tag>débutant}} | ||
+ | * 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 ! | ||
- | |||
- | ajout prévu : | ||
- | 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) | ||
- | |||
- | * 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 45: | 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 59: | 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 | ||
# 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 123: | 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 133: | 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 202: | 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 216: | 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 229: | 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 237: | 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 245: | 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 240: | ||
==== 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> | + | |
- | # touch /etc/rsync-backup-include | + | <code root>touch /etc/rsync-backup-include</code> |
- | </code> | + | |
==== 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> | + | |
- | # chmod 644 /etc/rsync-backup-include | + | <code root>chmod 644 /etc/rsync-backup-include</code> |
- | </code> | + | |
==== 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> | + | |
- | # nano /etc/rsync-backup-include | + | <code root>nano /etc/rsync-backup-include</code> |
- | </code> | + | |
Copier le contenu suivant. | Copier le contenu suivant. | ||
- | note : | + | <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. |
- | - /bin/ | + | # (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) |
- | - /boot/ | + | # à la visite d'un dossier, penser à exclure ce que l'on ne veut pas sauvegarder avant de mettre la règle contenant les * |
- | - /dev/ | + | # + [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 318: | Ligne 305: | ||
- /home/*/.macromedia/ | - /home/*/.macromedia/ | ||
- /home/*/.mozilla/ | - /home/*/.mozilla/ | ||
+ | - /home/*/.pulse/ | ||
- /home/*/.pulse-cookie | - /home/*/.pulse-cookie | ||
- /home/*/.recently-used | - /home/*/.recently-used | ||
Ligne 325: | Ligne 313: | ||
- /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 | ||
- | - .git/ | ||
- | - *~ | ||
- | </file> | + | # sauvegarder le dossier mail |
+ | #+ /var/ | ||
+ | #+ /var/spool/ | ||
+ | + /var/spool/mail/ | ||
+ | + /var/spool/mail/** | ||
+ | |||
+ | # exclure tout (comme ça on est sûr) | ||
+ | - ** | ||
+ | </code> | ||
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 | ||
- | 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 ==== |
+ | |||
+ | <key>C-o</key> suivi de <key>C-x</key> | ||
+ | |||
+ | ===== 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 root>touch /etc/logrotate.d/rsync-backup</code> | ||
+ | |||
+ | ==== Modifier les droits du fichier rsync-backup ==== | ||
+ | |||
+ | Dans une console root, exécuter la commande suivante. | ||
+ | |||
+ | <code root>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 root>nano /etc/logrotate.d/rsync-backup</code> | ||
+ | |||
+ | Copier le contenu suivant. | ||
+ | <code ini /etc/logrotate.d/rsync-backup> | ||
+ | /var/log/rsync-backup.log { | ||
+ | |||
+ | compress | ||
+ | copytruncate | ||
+ | delaycompress | ||
+ | missingok | ||
+ | notifempty | ||
+ | weekly | ||
+ | } | ||
+ | </code> | ||
==== 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> | ||
+ | |||
+ | ===== Ajouter le lancement automatique de la sauvegarde (cron) ===== | ||
+ | |||
+ | ==== Éditer le fichier contenant les cron ==== | ||
+ | |||
+ | Pour éditer le fichier, dans une console en root, exécuter la commande suivante. | ||
+ | |||
+ | <code root>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 * * * /usr/sbin/invoke-rc.d rsync-backup stop | ||
+ | </code> | ||
+ | |||
+ | ==== Sauvegarder le fichier et quitter l'éditeur de cron ==== | ||
+ | |||
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 ==== | + | ===== 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. | ||
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 stop 0 | + | |
- | </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 root>invoke-rc.d rsync-backup 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. | ||
- | <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> | + | <code root> |
- | # update-rc.d rsync-backup remove | + | update-rc.d rsync-backup remove |
- | # rm [[/etc/init.d/rsync-backup.sh]] | + | crontab -e (supprimer la tâche dans crontab) |
- | # rm [[/etc/rsync-backup-include]] | + | rm /etc/init.d/rsync-backup |
- | # rm /var/log/rsync-backup.log | + | rm /etc/rsync-backup-include |
- | # apt-get purge rsync -y | + | rm /etc/rsync-backup.conf |
+ | rm /etc/logrotate.d/rsync-backup | ||
+ | rm /var/log/rsync-backup.log | ||
+ | apt-get purge rsync -y | ||
</code> | </code> |