Initial import
Benjamin Renard

Benjamin Renard commited on 2011-09-06 14:10:02
Showing 5 changed files, with 132 additions and 0 deletions.

... ...
@@ -0,0 +1,8 @@
1
+- /dev/*
2
+- /proc/*
3
+- /mnt/*
4
+- /media/*
5
+- /tmp/*
6
+- /sys/*
7
+- /var/cache/apt/archives/*
8
+- /var/lib/backuppc/*
... ...
@@ -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
... ...
@@ -0,0 +1,5 @@
1
+#!/bin/bash
2
+
3
+/usr/local/sbin/bckp-disk &
4
+
5
+exit 0