From: MegaBrutal <code+git@megabrutal.com>
Date: Tue, 29 Sep 2015 03:22:36 +0000 (+0200)
Subject: backup_diff.sh, backup_full.sh: Prepared for in-place backups
X-Git-Url: http://git.megabrutal.com/?p=mgsautils.git;a=commitdiff_plain;h=fff3adbec4d94fade954a352ef076b5bbd97ea32

backup_diff.sh, backup_full.sh: Prepared for in-place backups

- Added option CLEAN_DIR to backup_fsdiff.conf which enables/disables
purging of the backup directory whenever a new full backup is made.
Previously, the hard-coded behavior was to purge the $STORAGE directory.

- MD5 checksum is now only counted for the recently made backup file.
Previously, all checksums were recalculated.

Now it is possible to have the main backup repository mounted at $STORAGE
and keep several weeks (or whatever backup cycle you have) of backups there.
With previous versions of the script, you were supposed to transfer those
files to a remote server, while the local $STORAGE directory was only used as
temporary storage. Now you can even mount $STORAGE directly from the remote
server through NFS or iSCSI, if that is more convenient for you.

	modified:   backup_diff.sh
	modified:   backup_fsdiff.conf
	modified:   backup_full.sh
---

diff --git a/fs/backup_diff.sh b/fs/backup_diff.sh
index 01145bd..56cc4ac 100755
--- a/fs/backup_diff.sh
+++ b/fs/backup_diff.sh
@@ -3,7 +3,7 @@
 FILENAME=${DIFFNAME}${APPEND}
 cd ${STORAGE}
 dar --verbose --alter=atime --empty-dir --fs-root / --noconf --create ${STORAGE}${FILENAME} --ref $(ls --sort=t ${STORAGE}*.dar | head -n 1 | cut -d. -f1) -y9 -an --exclude-from-file ${EXCLUDE}
-md5sum -b *.dar > $(ls --sort=t ${FULLNAME}*.md5 | head -n 1)
+md5sum -b ${FILENAME}*.dar >> $(ls --sort=t ${FULLNAME}*.md5 | head -n 1)
 
 case "${XFER_METHOD}" in
 	scp)
diff --git a/fs/backup_fsdiff.conf b/fs/backup_fsdiff.conf
index 3a3da89..632f794 100644
--- a/fs/backup_fsdiff.conf
+++ b/fs/backup_fsdiff.conf
@@ -3,6 +3,7 @@ DIFFNAME=filesys_$(hostname -s)_diff
 APPEND=$(date +%Y%m%d)
 STORAGE=/var/backups/fs/data/
 EXCLUDE=/var/backups/fs/exclude.lst
+CLEAN_DIR=false
 
 XFER_METHOD=scp
 XFER_USER=backup
diff --git a/fs/backup_full.sh b/fs/backup_full.sh
index 2967c12..4e828e6 100755
--- a/fs/backup_full.sh
+++ b/fs/backup_full.sh
@@ -2,7 +2,7 @@
 . $1
 FILENAME=${FULLNAME}${APPEND}
 cd ${STORAGE}
-rm *
+if [ "${CLEAN_DIR}" = "true" ]; then rm *; fi
 dar --verbose --alter=atime --empty-dir --fs-root / --noconf --create ${STORAGE}${FILENAME} -y9 -an --exclude-from-file ${EXCLUDE}
 md5sum -b ${FILENAME}* > ${FILENAME}.md5
 chown ${XFER_USER} ${FILENAME}.md5