... | ... |
@@ -15,6 +15,7 @@ SRCPARENT=`dirname "${SRCPATH}"` |
15 | 15 |
EXCLUDES=`echo $1 | awk -F:: '{ print $3 }'` |
16 | 16 |
TSTAMP=`date +%Y%m%d` |
17 | 17 |
JOBNAME=$3 |
18 |
+RSYNCEXEC=`type -p "rsync"` |
|
18 | 19 |
|
19 | 20 |
|
20 | 21 |
################### |
... | ... |
@@ -30,10 +31,33 @@ then |
30 | 31 |
do |
31 | 32 |
suffix=`expr $suffix + 1` |
32 | 33 |
done |
33 |
- BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.tgz" |
|
34 |
+ BACKUPNAME="${JOBNAME}_${TSTAMP}_${suffix}" |
|
34 | 35 |
else |
35 |
- BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" |
|
36 |
+ BACKUPNAME="${JOBNAME}_${TSTAMP}" |
|
36 | 37 |
fi |
38 |
+ BACKUPFILE="${TARGETDIR}${BACKUPNAME}.tgz" |
|
39 |
+ # Make a temporary copy if rsync is available |
|
40 |
+ if [ -n $RSYNCEXEC ] |
|
41 |
+ then |
|
42 |
+ RSYNCTMPDIR="tmp.`cat /dev/urandom | env LC_CTYPE=C tr -cd 'a-f0-9' | head -c 32`" |
|
43 |
+ if [ -d "${TARGETDIR}${RSYNCTMPDIR}" ] |
|
44 |
+ then |
|
45 |
+ suffix=2 |
|
46 |
+ while [ -d "${TARGETDIR}${RSYNCTMPDIR}_${suffix}" ] |
|
47 |
+ do |
|
48 |
+ suffix=`expr $suffix + 1` |
|
49 |
+ done |
|
50 |
+ RSYNCDIR="${TARGETDIR}${RSYNCTMPDIR}_${suffix}" |
|
51 |
+ else |
|
52 |
+ RSYNCDIR="${TARGETDIR}${RSYNCTMPDIR}" |
|
53 |
+ fi |
|
54 |
+ $RSYNCEXEC -a $SRCPATH $RSYNCDIR |
|
55 |
+ if [ $? -eq 0 ] |
|
56 |
+ then |
|
57 |
+ SRCPARENT=$RSYNCDIR |
|
58 |
+ fi |
|
59 |
+ fi |
|
60 |
+ # Begin tar backup |
|
37 | 61 |
tar -czf ${BACKUPFILE} --ignore-failed-read --warning=file-changed --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err |
38 | 62 |
if [ $? -eq 0 ] |
39 | 63 |
then |
... | ... |
@@ -42,6 +66,10 @@ then |
42 | 66 |
then |
43 | 67 |
rm ${BACKUPFILE}.err &> /dev/null |
44 | 68 |
fi |
69 |
+ if [ -n $RSYNCEXEC -a -d $RSYNCDIR ] |
|
70 |
+ then |
|
71 |
+ rm -rf $RSYNCDIR &> /dev/null |
|
72 |
+ fi |
|
45 | 73 |
exit 0 |
46 | 74 |
else |
47 | 75 |
cat ${BACKUPFILE}.err |
... | ... |
@@ -53,6 +81,10 @@ then |
53 | 81 |
then |
54 | 82 |
rm ${BACKUPFILE}.err &> /dev/null |
55 | 83 |
fi |
84 |
+ if [ -n $RSYNCEXEC -a -d $RSYNCDIR ] |
|
85 |
+ then |
|
86 |
+ rm -rf $RSYNCDIR &> /dev/null |
|
87 |
+ fi |
|
56 | 88 |
exit 1 |
57 | 89 |
fi |
58 | 90 |
else |