Browse code

Ignore exit code 1 of tar during directory backup which only indicates file changes during runtime

Benjamin Roth authored on19/01/2018 21:50:53
Showing1 changed files
... ...
@@ -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 ]
Browse code

Prevent runtime file changes by using rsync directory copy if available

Benjamin Roth authored on19/01/2018 21:12:10
Showing1 changed files
... ...
@@ -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
Browse code

Add warning option for file-changed

Benjamin Roth authored on19/01/2018 19:38:16
Showing1 changed files
... ...
@@ -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
Browse code

Initial commit

Benjamin Roth authored on16/06/2016 16:11:29
Showing1 changed files
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