Outils pour utilisateurs

Outils du site


logiciels:rsync

Ceci est une ancienne révision du document !


Utilisation de rsync pour la sauvegarde de fichiers

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 pour vous permettre de le tester en toute sécurité.

#!/bin/bash
# -----------------------------------------------------------------------------------------
# mybackup.sh : simple backup script using rsync
#
# fredo696@gmail.com / 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

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).

logiciels/rsync.1386435576.txt.gz · Dernière modification: Sat Dec 7 17:59:36 2013 par fredo