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

Ceci est une ancienne révision du document !


Sauvegarde incrémentielle avec rsync

Tags :

(testé - gksam 20-06-2013)

Le retour sur le forum est ici : 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 : Utiliser GNU/Linux en ligne de commande, tout commence là !. :-)

Introduction

/mnt/sauvegarde/
├── machine1
│   ├── increment
│   │   ├── 130612
│   │   ├── 130613
│   │   ├── 130614
│   │   ├── 130615
│   │   └── 130616
│   └── up-to-date
│       ├── etc
│       ├── home
│       ├── root
│       └── var
├── machine2
│   ├── increment
│   │   ├── 130613
│   │   ├── 130614
│   │   ├── 130615
│   │   ├── 130616
│   │   └── 130617
│   └── up-to-date
│       ├── etc
│       ├── home
│       ├── root
│       └── var

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

Vérifier l'état du paquet rsync

Pour que la sauvegarde fonctionne, il faut que le paquet rsync soit installé dans le système. Donc, dans une console, exécuter la commande suivante.

$ dpkg --list 'rsync' && echo "rsync est installé" || echo "rsync n'est pas installé"

Installer le paquet rsync

Si le paquet rsync n'est pas installé, dans une console en root, exécuter la commande suivante.

# apt-get install rsync -y

Créer le script de sauvegarde

Créer le fichier rsync-backup.sh dans le dossier /etc/init.d

Dans une console en root, exécuter la commande suivante.

# touch /etc/init.d/rsync-backup.sh

Modifier les droits du fichier rsync-backup.sh pour qu'il devienne exécutable

Dans une console root, exécuter la commande suivante.

# chmod 755 /etc/init.d/rsync-backup.sh

Copier le contenu du fichier rsync-backup.sh

Pour éditer le fichier, dans une console en root, exécuter la commande suivante.

# nano /etc/init.d/rsync-backup.sh

Copier le contenu suivant.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rsync-backup
# Required-Start:
# Required-Stop:     $all
# Should-Stop:
# Default-Start:
# Default-Stop:      0
# Short-Description: Sauvegarde du système.
### END INIT INFO

envoyer_mail () {

	echo "$1" | mail -s "[error] [`hostname`] [$NAME]" $USER

	return 0
}

do_stop () {

	# initialiser les variables
	local nom_hote=`hostname`

	# vérifier que le point de montage est monté
	# 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 )

	# tester si l'on peut écrire dans le dossier du point de montage
	# retourner 2 en cas d'échec
	[ ! -w $point_montage ] && return 2;

	# exécuter la commande rsync de sauvegarde
	/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

	# supprimer les anciennes sauvegarde
	find $point_montage/$nom_hote/increment/* -maxdepth 0 -type d -ctime +$nb_jours -exec rm -rf {} \; || return 4

	return 0
}

PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Description of the service"
NAME=rsync-backup
SCRIPTNAME=/etc/init.d/$NAME
rsync_backup_conf='/etc/rsync-backup.conf'
rsync_backup_include='/etc/rsync-backup-include'
point_montage=''
nb_jours=30

# lire la librairie init-functions
. /lib/lsb/init-functions

# lire le fichier rsync-backup.conf s'il est lisible
# exit 1 en cas d'échec
if [ -r $rsync_backup_conf ] ; then

	. $rsync_backup_conf
else

	log_failure_msg $NAME": " "le fichier $rsync_backup_conf n'est pas lisible"

	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

 	stop)
	  	log_daemon_msg $NAME "sauvegarde de la machine..."

		# exécuter la méthode do_stop
		do_stop

		# 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

Sauvegarder le fichier et quitter l'éditeur de texte

ctrl+o suivi de ctrl+x

Créer le script de configuration

Créer le fichier rsync-backup.conf dans le dossier /etc/

Dans une console en root, exécuter la commande suivante.

# touch /etc/rsync-backup.conf

Modifier les droits du fichier rsync-backup.conf pour qu'il devienne exécutable

Dans une console root, exécuter la commande suivante.

# chmod 644 /etc/rsync-backup.conf

Copier le contenu du fichier rsync-backup.conf

Pour éditer le fichier, dans une console en root, exécuter la commande suivante.

# nano /etc/rsync-backup.conf

Copier le contenu suivant.

# le point de montage doit être monté
point_montage='/mnt/sauvegarde'
nb_jours=10

Sauvegarder le fichier et quitter l'éditeur de texte

ctrl+o suivi de ctrl+x

Créer le fichier de sélection des dossiers et fichiers à sauvegarder

Ce fichier permet de sélectionner ce que l'on veut sauvegarder ou ne pas sauvegarder.

Créer le fichier rsync-backup-include dans le dossier /etc/

Dans une console en root, exécuter la commande suivante.

# touch /etc/rsync-backup-include

Modifier les droits du fichier rsync-backup-include

Dans une console root, exécuter la commande suivante.

# chmod 644 /etc/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.

# nano /etc/rsync-backup-include

Copier le contenu suivant. note :

- /bin/
- /boot/
- /dev/
+ /etc/
+ /etc/**
+ /home/
#- /home/*/Bureau/
#- /home/*/Documents/
#- /home/*/Images/
#- /home/*/Modèles/
- /home/*/Musique/
- /home/*/Public/
- /home/*/Téléchargements/
- /home/*/Vidéos/
- /home/*/.adobe/
- /home/*/.aptitude
- /home/*/.bash_history
- /home/*/.cache/
- /home/*/.cvs/
- /home/*/.dbus/
- /home/*/.fontconfig/
- /home/*/.gnome2_private/
- /home/*/.gnome2/
- /home/*/.gstreamer-0.10/
- /home/*/.gvfs/
- /home/*/.ICEauthority
- /home/*/.java/
- /home/*/.lesshst
- /home/*/.local/
- /home/*/.macromedia/
- /home/*/.mozilla/
- /home/*/.pulse-cookie
- /home/*/.recently-used
- /home/*/.swt/
- /home/*/.thumbnails/
- /home/*/.Xauthority
- /home/*/.xsession-errors
- /home/*/.xsession-errors.old
+ /home/*
+ /home/*/**
- /initrd.img
- /lib/
- lost+found/
- /media/
- /opt/
- /proc/
+ /root/
+ /root/**
- /run/
- /sbin/
- /selinux/
- /srv/
- /sys/
- /tmp/
- /usr/
+ /var/
+ /var/mail/
+ /var/mail/**
+ /var/spool/
+ /var/spool/cron/
+ /var/spool/cron/**
- /vmlinuz
- *.cvs
- .git/
- *~

pour plus d'informations sur cette partie, dans une console, exécuter la commande suivante.

$ man rsync

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

ctrl+o suivi de ctrl+x

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)

# update-rc.d rsync-backup stop 0

Utilisation

voilà aux prochains arrêts la machine sera sauvegardée

Vérifier que la sauvegarde fonctionne

Dans une console root, exécuter la commande suivante.

# grep 'rsync-backup:' /var/log/syslog

Afficher ce qui est sauvegardé

Dans une console, exécuter la commande suivante.

cat /var/log/rsync-backup.log

Désinstallation

Dans une console root, exécuter les commandes suivantes.

# update-rc.d rsync-backup remove
# rm [[/etc/init.d/rsync-backup.sh]]
# rm [[/etc/rsync-backup-include]]
# rm /var/log/rsync-backup.log
# apt-get purge rsync -y
doc/systeme/rsync/backup.1373196613.txt.gz · Dernière modification: 07/07/2013 13:30 par gksam

Pied de page des forums

Propulsé par FluxBB