diff --git a/duplicacy.sh b/duplicacy.sh index 96b4b06..25dbd7f 100644 --- a/duplicacy.sh +++ b/duplicacy.sh @@ -1 +1,39 @@ -#!/bin/sh \ No newline at end of file +#!/bin/sh + +lockfile="/tmp/duplicacy.lock" +FOLDERS_TO_BACKUP=("" "<2nd folder to backup>") +HOST=$(hostname -s) +LOGFILE="/var/log/duplicacy/duplicacy_$(/bin/date +%Y%m%d-%H%M%S).log" + +if [ -e ${lockfile} ] && kill -0 `cat ${lockfile}`; then + echo "duplicacy backup already running" >> ${LOGFILE} + exit +fi + +# make sure the lockfile is removed when we exit and then claim it +trap "rm -f ${lockfile}; exit" INT TERM EXIT +echo $$ > ${lockfile} + +# run the backup +for folder in ${FOLDERS_TO_BACKUP[@]}; do + # removes the slashes and replaces with a dash + id=${HOST}${folder////-} + cd ${folder} + if [ -d "${folder}/.duplicacy" ]; then + duplicacy -verbose -log backup -stats >> ${LOGFILE} 2>&1 + else + # sftp password DUPLICACY_SSH_PASSWORD DUPLICACY__SSH_PASSWORD ssh_password + echo "Please enter duplicacy ssh password" + read -S SSH_PASSWORD + export DUPLICACY_SSH_PASSWORD=${SSH_PASSWORD} + duplicacy init ${id} sftp://duplicacy@gauntnas.home.johnhgaunt.com//mnt/data-pool/duplicacy/data + duplicacy set -key ssh_password -value "${SSH_PASSWORD}" + SSH_PASSWORD='' + fi +done + +# compress the logs +pigz $(dirname ${LOGFILE})/*.log + +# clean up lockfile +rm -f ${lockfile} \ No newline at end of file