... | ... |
@@ -1,4 +1,14 @@ |
1 | 1 |
#!/bin/bash |
2 |
+ |
|
3 |
+ |
|
4 |
+#+++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
5 |
+# eSales Media Backup Script |
|
6 |
+# |
|
7 |
+# Author: Benjamin Roth |
|
8 |
+# Version: 18.0.3 |
|
9 |
+#+++++++++++++++++++++++++++++++++++++++++++++++++++ |
|
10 |
+ |
|
11 |
+ |
|
2 | 12 |
if [ ! $1 -a $2 -a $3 ] |
3 | 13 |
then |
4 | 14 |
echo "Wrong parameter count." |
... | ... |
@@ -59,7 +69,7 @@ then |
59 | 69 |
fi |
60 | 70 |
# Begin tar backup |
61 | 71 |
tar -czf ${BACKUPFILE} --ignore-failed-read --warning=file-changed --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err |
62 |
- if [ $? -eq 0 ] |
|
72 |
+ if [ $? -eq 0 -o $? -eq 1 ] |
|
63 | 73 |
then |
64 | 74 |
echo Backup $BACKUPFILE created |
65 | 75 |
if [ -f ${BACKUPFILE}.err ] |
... | ... |
@@ -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 |
... | ... |
@@ -34,7 +34,7 @@ then |
34 | 34 |
else |
35 | 35 |
BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" |
36 | 36 |
fi |
37 |
- tar -czf ${BACKUPFILE} --ignore-failed-read --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err |
|
37 |
+ tar -czf ${BACKUPFILE} --ignore-failed-read --warning=file-changed --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err |
|
38 | 38 |
if [ $? -eq 0 ] |
39 | 39 |
then |
40 | 40 |
echo Backup $BACKUPFILE created |
1 | 1 |
new file mode 100644 |
... | ... |
@@ -0,0 +1,61 @@ |
1 |
+#!/bin/bash |
|
2 |
+if [ ! $1 -a $2 -a $3 ] |
|
3 |
+then |
|
4 |
+ echo "Wrong parameter count." |
|
5 |
+ exit 1 |
|
6 |
+fi |
|
7 |
+ |
|
8 |
+##################### |
|
9 |
+# PARAMETER # |
|
10 |
+##################### |
|
11 |
+TARGETDIR=$2 |
|
12 |
+SRCPATH=`echo $1 | awk -F:: '{ print $2 }'` |
|
13 |
+SRCDIR=`basename "${SRCPATH}"` |
|
14 |
+SRCPARENT=`dirname "${SRCPATH}"` |
|
15 |
+EXCLUDES=`echo $1 | awk -F:: '{ print $3 }'` |
|
16 |
+TSTAMP=`date +%Y%m%d` |
|
17 |
+JOBNAME=$3 |
|
18 |
+ |
|
19 |
+ |
|
20 |
+################### |
|
21 |
+# BACKUP # |
|
22 |
+################### |
|
23 |
+if [ -d $SRCPATH -a -d $TARGETDIR ] |
|
24 |
+then |
|
25 |
+ # Check for existing backup file |
|
26 |
+ if [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" ] |
|
27 |
+ then |
|
28 |
+ suffix=2 |
|
29 |
+ while [ -f "${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.tgz" ] |
|
30 |
+ do |
|
31 |
+ suffix=`expr $suffix + 1` |
|
32 |
+ done |
|
33 |
+ BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}_${suffix}.tgz" |
|
34 |
+ else |
|
35 |
+ BACKUPFILE="${TARGETDIR}${JOBNAME}_${TSTAMP}.tgz" |
|
36 |
+ fi |
|
37 |
+ tar -czf ${BACKUPFILE} --ignore-failed-read --directory ${SRCPARENT} ${SRCDIR} &> /dev/null 2> ${BACKUPFILE}.err |
|
38 |
+ if [ $? -eq 0 ] |
|
39 |
+ then |
|
40 |
+ echo Backup $BACKUPFILE created |
|
41 |
+ if [ -f ${BACKUPFILE}.err ] |
|
42 |
+ then |
|
43 |
+ rm ${BACKUPFILE}.err &> /dev/null |
|
44 |
+ fi |
|
45 |
+ exit 0 |
|
46 |
+ else |
|
47 |
+ cat ${BACKUPFILE}.err |
|
48 |
+ if [ -f $BACKUPFILE ] |
|
49 |
+ then |
|
50 |
+ rm $BACKUPFILE &> /dev/null |
|
51 |
+ fi |
|
52 |
+ if [ -f ${BACKUPFILE}.err ] |
|
53 |
+ then |
|
54 |
+ rm ${BACKUPFILE}.err &> /dev/null |
|
55 |
+ fi |
|
56 |
+ exit 1 |
|
57 |
+ fi |
|
58 |
+else |
|
59 |
+ echo "Check target and source directories!" |
|
60 |
+ exit 1 |
|
61 |
+fi |