Zionetrix::Git
Repositories
Help
Report an Issue
bckp-disk
Code
Commits
Branches
Tags
Search
Tree:
f2a1075
Branches
Tags
master
bckp-disk
usr
local
sbin
bckp-disk
Initial import
Benjamin Renard
commited
f2a1075
at 2011-09-06 14:10:02
bckp-disk
Blame
History
Raw
#!/bin/bash # LOG LOG=/var/log/bckp-disk.log # Chemins à archiver (avec le / finale) SRC_BACKUP_PATH="/" # A exclure EXCLUDE_FROM_FILE='/etc/rsync.exclude' # Dossier dans lequel archiver les dossiers sur le disque (sans le / initial et avec le / final) DST_BACKUP_PATH="serveur/" # LOCK_FILE LOCK_FILE=/var/lock/bckp-disk.lock function is_mount () { df $1 | grep -c "^$1" } function debug () { d=`date "+%Y-%m-%d - %Hh%Mm%Ss"` echo "$d -- [$1] $2" >> $LOG 2>&1 if [ "$1" == "HALT" ] then beep -f 300 -l 2000 fi } if [ "$ACTION" == "add" -a "$DEVTYPE" == "partition" ] then debug INFO Start if [ -f $LOCK_FILE ] then debug ERREUR "Le fichier de lock est toujours présent ($LOCK_FILE)." debug HALT exit 1 fi debug INFO "Dépot du fichier de lock." echo $$ > $LOCK_FILE beep -f 1000 -r 2 -l 100 DATE=`date "+%Y-%m-%d--%Hh%Mm%Ss"` MNT_DIR=/media/bckp_$DATE if [ `is_mount $DEVNAME` -eq 1 ] then debug ERREUR "Le disque est déjà monté" debug HALT exit 1 fi if [ -d $MNT_DIR ] then debug ERREUR "Le point de montage ($MNT_DIR) existe déjà." debug HALT exit 1 fi debug INFO "Montage du disque." mkdir $MNT_DIR >> $LOG 2>&1 mount $DEVNAME $MNT_DIR >> $LOG 2>&1 if [ `is_mount $DEVNAME` -eq 0 ] then echo "[ERREUR] Problème durant le montage du disque dur." rmdir $MNT_DIR >> $LOG 2>&1 debug HALT exit 1 fi debug INFO "Disque monté." debug INFO "Synchronisation." rsync -av --delete-after --exclude-from=$EXCLUDE_FROM_FILE $SRC_BACKUP_PATH $MNT_DIR/$DST_BACKUP_PATH >> $LOG 2>&1 if [ $? -ne 0 ] then debug ERREUR "Problème durant la synchronisation" umount $MNT_DIR >> $LOG 2>&1 rmdir $MNT_DIR >> $LOG 2>&1 debug HALT exit 1 fi debug INFO "Synchronisation réussie" debug INFO "Démontage du disque" umount $MNT_DIR >> $LOG 2>&1 if [ `is_mount $DEVNAME` -eq 1 ] then debug ERREUR "Problème durant le démontage du disque dur." debug HALT exit 1 fi rmdir $MNT_DIR >> $LOG 2>&1 while /bin/true; do if [ -L "/dev/disk/by-uuid/$ID_FS_UUID" ] then debug INFO "Attente que le disque soit débranché..." beep -f 1000 -r 3 -l 500 sleep 60 else debug INFO "Le disque a été débranché." debug INFO "Stop." rm -f $LOCK_FILE beep -f 1000 -l 2000 exit 0 fi done fi