Benjamin Renard commited on 2011-09-06 14:10:02
Showing 5 changed files, with 132 additions and 0 deletions.
| ... | ... |
@@ -0,0 +1,3 @@ |
| 1 |
+# A l'insertion du disque, lancement du script de backup |
|
| 2 |
+# Rechargement des regles udev manuellement si necessaire : udevadm control --reload-rules |
|
| 3 |
+SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{vendor}=="WD", ATTRS{model}=="10EAVS External", RUN+="/usr/local/sbin/udev-bckp-disk"
|
| ... | ... |
@@ -0,0 +1,116 @@ |
| 1 |
+#!/bin/bash |
|
| 2 |
+ |
|
| 3 |
+# LOG |
|
| 4 |
+LOG=/var/log/bckp-disk.log |
|
| 5 |
+ |
|
| 6 |
+# Chemins à archiver (avec le / finale) |
|
| 7 |
+SRC_BACKUP_PATH="/" |
|
| 8 |
+ |
|
| 9 |
+# A exclure |
|
| 10 |
+EXCLUDE_FROM_FILE='/etc/rsync.exclude' |
|
| 11 |
+ |
|
| 12 |
+# Dossier dans lequel archiver les dossiers sur le disque (sans le / initial et avec le / final) |
|
| 13 |
+DST_BACKUP_PATH="serveur/" |
|
| 14 |
+ |
|
| 15 |
+# LOCK_FILE |
|
| 16 |
+LOCK_FILE=/var/lock/bckp-disk.lock |
|
| 17 |
+ |
|
| 18 |
+function is_mount () {
|
|
| 19 |
+ df $1 | grep -c "^$1" |
|
| 20 |
+} |
|
| 21 |
+ |
|
| 22 |
+function debug () {
|
|
| 23 |
+ d=`date "+%Y-%m-%d - %Hh%Mm%Ss"` |
|
| 24 |
+ echo "$d -- [$1] $2" >> $LOG 2>&1 |
|
| 25 |
+ if [ "$1" == "HALT" ] |
|
| 26 |
+ then |
|
| 27 |
+ beep -f 300 -l 2000 |
|
| 28 |
+ fi |
|
| 29 |
+} |
|
| 30 |
+ |
|
| 31 |
+if [ "$ACTION" == "add" -a "$DEVTYPE" == "partition" ] |
|
| 32 |
+then |
|
| 33 |
+ debug INFO Start |
|
| 34 |
+ if [ -f $LOCK_FILE ] |
|
| 35 |
+ then |
|
| 36 |
+ debug ERREUR "Le fichier de lock est toujours présent ($LOCK_FILE)." |
|
| 37 |
+ debug HALT |
|
| 38 |
+ exit 1 |
|
| 39 |
+ fi |
|
| 40 |
+ debug INFO "Dépot du fichier de lock." |
|
| 41 |
+ echo $$ > $LOCK_FILE |
|
| 42 |
+ beep -f 1000 -r 2 -l 100 |
|
| 43 |
+ |
|
| 44 |
+ DATE=`date "+%Y-%m-%d--%Hh%Mm%Ss"` |
|
| 45 |
+ MNT_DIR=/media/bckp_$DATE |
|
| 46 |
+ |
|
| 47 |
+ if [ `is_mount $DEVNAME` -eq 1 ] |
|
| 48 |
+ then |
|
| 49 |
+ debug ERREUR "Le disque est déjà monté" |
|
| 50 |
+ debug HALT |
|
| 51 |
+ exit 1 |
|
| 52 |
+ fi |
|
| 53 |
+ |
|
| 54 |
+ if [ -d $MNT_DIR ] |
|
| 55 |
+ then |
|
| 56 |
+ debug ERREUR "Le point de montage ($MNT_DIR) existe déjà." |
|
| 57 |
+ debug HALT |
|
| 58 |
+ exit 1 |
|
| 59 |
+ fi |
|
| 60 |
+ |
|
| 61 |
+ debug INFO "Montage du disque." |
|
| 62 |
+ mkdir $MNT_DIR >> $LOG 2>&1 |
|
| 63 |
+ mount $DEVNAME $MNT_DIR >> $LOG 2>&1 |
|
| 64 |
+ |
|
| 65 |
+ if [ `is_mount $DEVNAME` -eq 0 ] |
|
| 66 |
+ then |
|
| 67 |
+ echo "[ERREUR] Problème durant le montage du disque dur." |
|
| 68 |
+ rmdir $MNT_DIR >> $LOG 2>&1 |
|
| 69 |
+ debug HALT |
|
| 70 |
+ exit 1 |
|
| 71 |
+ fi |
|
| 72 |
+ debug INFO "Disque monté." |
|
| 73 |
+ |
|
| 74 |
+ debug INFO "Synchronisation." |
|
| 75 |
+ |
|
| 76 |
+ rsync -av --delete-after --exclude-from=$EXCLUDE_FROM_FILE $SRC_BACKUP_PATH $MNT_DIR/$DST_BACKUP_PATH >> $LOG 2>&1 |
|
| 77 |
+ |
|
| 78 |
+ if [ $? -ne 0 ] |
|
| 79 |
+ then |
|
| 80 |
+ debug ERREUR "Problème durant la synchronisation" |
|
| 81 |
+ umount $MNT_DIR >> $LOG 2>&1 |
|
| 82 |
+ rmdir $MNT_DIR >> $LOG 2>&1 |
|
| 83 |
+ debug HALT |
|
| 84 |
+ exit 1 |
|
| 85 |
+ fi |
|
| 86 |
+ debug INFO "Synchronisation réussie" |
|
| 87 |
+ |
|
| 88 |
+ debug INFO "Démontage du disque" |
|
| 89 |
+ umount $MNT_DIR >> $LOG 2>&1 |
|
| 90 |
+ |
|
| 91 |
+ if [ `is_mount $DEVNAME` -eq 1 ] |
|
| 92 |
+ then |
|
| 93 |
+ debug ERREUR "Problème durant le démontage du disque dur." |
|
| 94 |
+ debug HALT |
|
| 95 |
+ exit 1 |
|
| 96 |
+ fi |
|
| 97 |
+ |
|
| 98 |
+ rmdir $MNT_DIR >> $LOG 2>&1 |
|
| 99 |
+ |
|
| 100 |
+ while /bin/true; |
|
| 101 |
+ do |
|
| 102 |
+ if [ -L "/dev/disk/by-uuid/$ID_FS_UUID" ] |
|
| 103 |
+ then |
|
| 104 |
+ debug INFO "Attente que le disque soit débranché..." |
|
| 105 |
+ beep -f 1000 -r 3 -l 500 |
|
| 106 |
+ sleep 60 |
|
| 107 |
+ else |
|
| 108 |
+ debug INFO "Le disque a été débranché." |
|
| 109 |
+ debug INFO "Stop." |
|
| 110 |
+ rm -f $LOCK_FILE |
|
| 111 |
+ beep -f 1000 -l 2000 |
|
| 112 |
+ exit 0 |
|
| 113 |
+ fi |
|
| 114 |
+ done |
|
| 115 |
+ |
|
| 116 |
+fi |