Révision 67 bin/zfs-replica
zfs-replica (revision 67) | ||
---|---|---|
17 | 17 |
BINMBUFFER="mbuffer -4 -v 0 -q -s 128k -m 1G" |
18 | 18 |
LOCALHOST=$(hostname -s) |
19 | 19 |
|
20 |
LOGFILEROTATE=21 |
|
21 |
LOGDIR="/var/log/zfs-replica" |
|
22 |
|
|
23 |
if [ "$2" == "--cronlog" ]; |
|
24 |
then |
|
25 |
LOG=true |
|
26 |
if [ ! -d $LOGDIR ]; |
|
27 |
then |
|
28 |
mkdir -p $LOGDIR |
|
29 |
fi |
|
30 |
else |
|
31 |
LOG=false |
|
32 |
fi |
|
33 |
|
|
20 | 34 |
#******************************** |
35 |
#* function ok_exit |
|
36 |
#******************************* |
|
37 |
function ok_exit { |
|
38 |
if $LOG; then |
|
39 |
echo $1 1>&2 |
|
40 |
# restauration de stderr et stdout, fermeture des fd temporaires |
|
41 |
exec 2>&7 7>&- |
|
42 |
exec 1>&6 6>&- |
|
43 |
fi |
|
44 |
exit 0 |
|
45 |
} |
|
46 |
|
|
47 |
#******************************** |
|
48 |
#* function err_exit |
|
49 |
#******************************* |
|
50 |
function err_exit { |
|
51 |
if $LOG; then |
|
52 |
echo $1 1>&2 |
|
53 |
# restauration de stderr et stdout, fermeture des fd temporaires |
|
54 |
exec 2>&7 7>&- |
|
55 |
exec 1>&6 6>&- |
|
56 |
fi |
|
57 |
cat $LOGFILE |
|
58 |
exit 1 |
|
59 |
} |
|
60 |
|
|
61 |
#******************************** |
|
21 | 62 |
#* function initenv |
22 | 63 |
#******************************* |
23 | 64 |
function initenv { |
... | ... | |
27 | 68 |
exit 1 |
28 | 69 |
fi |
29 | 70 |
|
30 |
if [ ! -f $1 ]
|
|
71 |
if [ ! -s $FILE_NAME ]
|
|
31 | 72 |
then |
32 |
echo "/!\\ Replica Configuration file missing /!\\" 1>&2
|
|
33 |
exit 1
|
|
73 |
echo "Replica Configuration file not found"
|
|
74 |
exit 0
|
|
34 | 75 |
fi |
35 |
|
|
36 |
if [ ! -e $FILE_NAME ] |
|
37 |
then |
|
38 |
echo "Replica Configuration file not found" 1>&2 |
|
39 |
exit 1; |
|
40 |
fi |
|
41 |
echo $FILE_NAME |
|
42 | 76 |
lastsnapshotReplicated=$(cat $FILE_NAME|grep lastsnapshotreplicated|cut -d "=" -f2) |
43 | 77 |
server=$(cat $FILE_NAME|grep server|cut -d "=" -f2) |
44 | 78 |
nbreplica=$(cat $FILE_NAME|grep nbreplica|cut -d "=" -f2) |
45 | 79 |
namereplica=$(cat $FILE_NAME|grep namereplica|cut -d "=" -f2) |
46 | 80 |
namevolfs=$(cat $FILE_NAME|grep "name="|cut -d "=" -f2) |
47 | 81 |
|
82 |
if $LOG; |
|
83 |
then |
|
84 |
LOGFILE="$LOGDIR/${namevolfs//\//-}.log" |
|
85 |
|
|
86 |
if [ -f $LOGFILE ]; |
|
87 |
then |
|
88 |
savelog -t -c $LOGFILEROTATE -q -n $LOGFILE |
|
89 |
fi |
|
90 |
|
|
91 |
# sauvegarde de stdout et stderr dans des fd (file descriptor) temporaires |
|
92 |
#+redirection de stdout vers $TMPFILE |
|
93 |
#+redirection de stderr vers stdout |
|
94 |
#+ = ">> $TMPFILE 2>&1" |
|
95 |
exec 6>&1 7>&2 |
|
96 |
exec 1>$LOGFILE |
|
97 |
exec 2>&1 |
|
98 |
fi |
|
99 |
|
|
48 | 100 |
if [[ -z $namereplica ]] || [[ -z $nbreplica ]] || [[ -z $namevolfs ]] |
49 | 101 |
then |
50 |
echo "Incoherence data in $FILE_NAME" 1>&2 |
|
51 |
exit 1 |
|
102 |
err_exit "Incoherence data in $FILE_NAME" |
|
52 | 103 |
fi |
53 | 104 |
|
54 | 105 |
echo "$getConfigSnapshotTool $namevolfs" |
55 | 106 |
getlistSnapshot=$($getConfigSnapshotTool $namevolfs) |
56 | 107 |
if [[ "$getlistSnapshot" == "" ]] |
57 | 108 |
then |
58 |
echo "Please, enable a snapshot configuration for $namevolfs" 1>&2 |
|
59 |
exit 1 |
|
109 |
err_exit "Please, enable a snapshot configuration for $namevolfs" |
|
60 | 110 |
fi |
61 | 111 |
} |
62 | 112 |
|
... | ... | |
65 | 115 |
#*************************************** |
66 | 116 |
function checkServerConnection { |
67 | 117 |
|
68 |
ssh -o BatchMode=yes root@$server ls
|
|
118 |
ssh -o BatchMode=yes root@$server date
|
|
69 | 119 |
|
70 | 120 |
if [ "$?" != "0" ] |
71 | 121 |
then |
72 |
echo "SSH Connection server $server failed, please check the private/public key" 1>&2 |
|
73 |
exit 1 |
|
122 |
err_exit "SSH Connection server $server failed, please check the private/public key" |
|
74 | 123 |
fi |
75 | 124 |
|
76 | 125 |
} |
... | ... | |
187 | 236 |
/bin/rm $FILE_NAME |
188 | 237 |
/bin/mv $TEMP_FILE_NAME $FILE_NAME |
189 | 238 |
del_old_snapshot |
190 |
exit 0
|
|
239 |
ok_exit
|
|
191 | 240 |
fi |
192 | 241 |
|
193 | 242 |
else |
... | ... | |
214 | 263 |
/bin/rm $FILE_NAME |
215 | 264 |
/bin/mv $TEMP_FILE_NAME $FILE_NAME |
216 | 265 |
del_old_snapshot |
217 |
exit 0
|
|
266 |
ok_exit
|
|
218 | 267 |
fi |
219 | 268 |
fi |
220 | 269 |
fi |
... | ... | |
239 | 288 |
/bin/rm $FILE_NAME |
240 | 289 |
/bin/mv $TEMP_FILE_NAME $FILE_NAME |
241 | 290 |
del_old_snapshot |
242 |
exit 0
|
|
291 |
ok_exit
|
|
243 | 292 |
fi |
244 | 293 |
else |
245 | 294 |
checkServerConnection |
246 | 295 |
if [ "$snasphot2replicate" == "" ] |
247 | 296 |
then |
248 |
exit 1
|
|
297 |
err_exit
|
|
249 | 298 |
else |
250 | 299 |
#$BINZFS send -i $lastsnapshotReplicated $namevolfs@$snasphot2replicate | ssh -o BatchMode=yes root@$server $BINZFS recv $namereplica |
251 | 300 |
computePort |
... | ... | |
262 | 311 |
/bin/rm $FILE_NAME |
263 | 312 |
/bin/mv $TEMP_FILE_NAME $FILE_NAME |
264 | 313 |
del_old_snapshot |
265 |
exit 0
|
|
314 |
ok_exit
|
|
266 | 315 |
fi |
267 | 316 |
fi |
268 | 317 |
fi |
... | ... | |
332 | 381 |
|
333 | 382 |
if [ "$snasphot2replicate" == "$lastsnapshot" ] |
334 | 383 |
then |
335 |
echo "Nothing to replicate" 1>&2 |
|
336 |
exit 1 |
|
384 |
err_exit "Nothing to replicate" |
|
337 | 385 |
|
338 | 386 |
fi |
339 | 387 |
if [ "$server" == "" ] |
... | ... | |
346 | 394 |
fi |
347 | 395 |
if [[ $check_lastsnapshotReplica -eq 0 ]] |
348 | 396 |
then |
349 |
echo "Incoherence, incremental replication failed : $lastsnapshotReplicated is missing" 1>&2 |
|
350 |
exit 1 |
|
397 |
err_exit "Incoherence, incremental replication failed : $lastsnapshotReplicated is missing" |
|
351 | 398 |
fi |
352 | 399 |
|
353 | 400 |
if [[ $check_currentsnapshotReplica -eq 1 ]] |
354 | 401 |
then |
355 |
echo "No replica to do, $lastSnapshot already exists" 1>&2 |
|
356 |
exit 1 |
|
402 |
err_exit "No replica to do, $lastSnapshot already exists" |
|
357 | 403 |
fi |
358 | 404 |
fi |
359 | 405 |
echo $snasphot2replicate |
... | ... | |
362 | 408 |
|
363 | 409 |
nointeractive |
364 | 410 |
|
411 |
# restauration de stderr et stdout, fermeture des fd temporaires |
|
412 |
exec 2>&7 7>&- |
|
413 |
exec 1>&6 6>&- |
|
414 |
|
Formats disponibles : Unified diff