Outils pour utilisateurs

Outils du site


logiciels:rsync

Utilisation de rsync pour la sauvegarde de fichiers

Rsync est un outil qui est optimisé pour le transfert de fichiers de façon incrémentale.

Site officiel du projet rsync : https://rsync.samba.org

Exemple de sauvegarde locale

Dans cet exemple (testé sur un système Debian 7.0), nous allons programmer une sauvegarde journalière, vers un média amovible (testé avec une clé usb, mais un disque dur externe ferait tout aussi bien l'affaire). Le support amovible reste bien entendu, dans ce cas, connecté en permanence à notre machine.

Préparation du média de sauvegarde

Connectez votre clé/disque externe sur votre machine, utilisez la commande

# fdisk -l

pour savoir quel device (/dev/sdX) lui correspond

:!: Attention aux manipulations suivantes, potentiellement dangereuses pour vos données en cas d'erreur! :!:

Partitionnement/formatage du média

# fdisk /dev/sdX

Créer une partition de type Linux, non bootable.

Formatage de la partition

# mkfs.ext4 -L backup-usb1 /dev/sdX1

Notez l'utilisation d'un label (=nom du volume), à modifier selon vos désirs.

Montage dans le fstab via son LABEL

# nano /etc/fstab

Ajoutez la ligne suivante :

LABEL="backup-usb1"     /mnt/usb        auto    defaults,noauto 0       2

Le média ne sera pas monté automatiquement lors du démarrage du système (option “noauto”)

Test de montage/démontage du média

# mkdir -p /mnt/usb && mount /mnt/usb && umount /mnt/usb

S'il n'y a pas d'erreur, votre média est prêt à être utilisé.

Script de sauvegarde

Créer le script Bash suivant, vous pouvez le stocker dans le dossier /root par exemple.

Adaptez les variables SRC, EXCLUDE, DEST, OPTIONS selon vos besoins.

Note : par défaut le script lance rsync avec l'option

--dry-run

(mode simulation, aucun fichier n'est réellement écrit ou supprimé sur le média de destination) pour vous permettre de le tester en toute sécurité.

L'option

--delete

supprimera, sur le média destination, les fichiers qui n'existent plus dans la source de sauvegarde.

#!/bin/bash
# -----------------------------------------------------------------------------------------
# mybackup.sh : simple backup script using rsync
#
# http://agentoss.wordpress.com
#
# make sure /etc/fstab contains an entry for DEST, for example :
# LABEL="backup-usb1"     /mnt/usb        auto    defaults,noauto 0       2
 
# directories to backup
SRC="/root /etc /home /var"
 
# directories NOT to backup
EXCLUDE="--exclude /var/tmp --exclude /var/cache --exclude /var/run --exclude /var/lock"
 
# backup destination mount point
DEST="/mnt/usb"
 
# options for rsync (remove -v --dry-run when everything is well tested)
OPTIONS="-az --stats --delete -v --dry-run"
 
# minimal error handling
if [[ -z "$DEST" || -z "$SRC" ]];then
 echo "$0 : aborted : SRC or DEST not specified!"
 exit 1
fi
# empty OPTIONS mean "dry run"
[[ -z "$OPTIONS" ]] && OPTIONS="--dry-run"
 
# make sure DEST is not mounted already
umount "$DEST" 2>/dev/null
 
# do a fsck on DEST
/sbin/fsck -a "$DEST"
result=$?
if [[ $result -gt 1 ]];then
 echo -e "$0 : fsck failed, backup cancelled.\nCheck or replace media $DEST\n"
 exit 1
fi
 
# mount DEST and execute backup cmd
if mount "$DEST";then
 msg="*** an error or warning occured! ***"
 cmd="rsync $OPTIONS $EXCLUDE $SRC $DEST"
 echo "$cmd"
 time $cmd && msg="*** OK ***"
 echo -e "\n$0 : rsync : $msg\n\nInformation on $DEST:\n$(df -h|head -1; df -h|grep $DEST)"
 umount "$DEST"
 exit 0
else
 echo "$0 : aborted : mount $DEST failed!"
fi
 
# exit with error code
exit 1

Vous pouvez lancer le script afin de visualiser son déroulement (n'oubliez pas de lui donner les droits d'exécution) :

# ./mybackup.sh

Une fois que tout fonctionne comme prévu, vous pouvez enlever les options

-v --dry-run

de la variable OPTIONS.

Automatisation

Ajout d'un job dans le crontab

# crontab -e

Exemple pour une exécution tous les jours à 03h00

0 3 * * * /root/mybackup.sh

Comme toujours grâce à cron, le résultat du script sera envoyé par courriel (à root dans notre cas), ce qui permet de s'assurer que tout se passe bien :-P

logiciels/rsync.txt · Dernière modification: Mon Oct 27 18:44:08 2014 par fredo