#!/bin/bash
# A script to perform incremental backups using rsync
set -o errexit
set -o nounset
set -o pipefail
readonly SOURCE_DIR="/home/samba/testshare"
readonly DEST_MAINPATH="/home/samba/testshare/.snapshots"
#readonly DEST_FOLDER="$(date '+%Y-%m-%d_%H%M%S')"
readonly DEST_FOLDER="$(date +@GMT-%Y.%m.%d-%H.%M.%S)"
readonly BACKUP_PATH="${DEST_MAINPATH}/${DEST_FOLDER}"
readonly LATEST_LINK="latest"
readonly BACKUP_LOG="${BACKUP_PATH}.log"
[ -d "${DEST_MAINPATH}" ] || mkdir -p "${DEST_MAINPATH}"
if [ -L "${DEST_MAINPATH}/${LATEST_LINK}" ]; then
rsync -av --delete --stats --human-readable \
--exclude "${DEST_MAINPATH}" \
"${SOURCE_DIR}/" \
--link-dest "${DEST_MAINPATH}/${LATEST_LINK}" \
"${BACKUP_PATH}" | gzip -c > "${BACKUP_LOG}".gz
rm "${DEST_MAINPATH}/${LATEST_LINK}"
else
rsync -av --delete --stats --human-readable \
--exclude "${DEST_MAINPATH}" \
"${SOURCE_DIR}/" \
"${BACKUP_PATH}" | gzip -c > "${BACKUP_LOG}".gz
fi
cd "$DEST_MAINPATH" && ln -s "${DEST_FOLDER}" "${LATEST_LINK}"