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