diff --git a/rclone.sh b/rclone.sh index caa1cd3..b037a5d 100644 --- a/rclone.sh +++ b/rclone.sh @@ -1,22 +1,61 @@ #!/bin/bash -RCLONE_DIR="/mnt/data-pool/rclone" -RCLONE_LOGS="${RCLONE_DIR}/logs" -RCLONE_CONFIG="${RCLONE_DIR}/rclone.conf" -RCLONE_BIN="${RCLONE_DIR}/rclone" -RCLONE_COMMAND="${RCLONE_BIN} --config ${RCLONE_CONFIG} --verbose --log-file" -# media -${RCLONE_COMMAND} "${RCLONE_LOGS}/media/rclone_media_`date +%Y%m%d-%H%M%S`.log" copy /mnt/media/plex/.local_media/ gd:Media +# Variables +RCLONE_DIR="/mnt/data-pool/rclone" +RCLONE_LOGS="${RCLONE_DIR}/logs" +RCLONE_CONFIG="${RCLONE_DIR}/rclone.conf" +RCLONE_BIN="${RCLONE_DIR}/rclone" +RCLONE_COMMAND="${RCLONE_BIN} --config ${RCLONE_CONFIG} --log-level INFO --log-file" +PIDFILE="${RCLONE_DIR}/rclone.sh.pid" -# Proxmox Backups -${RCLONE_COMMAND} "${RCLONE_LOGS}/proxmox/rclone_proxmox_`date +%Y%m%d-%H%M%S`.log" copy /mnt/data-pool/proxmox/dump gauntnas:"Backups/Proxmox Backups/" +# removes pid file and exit cleany +function clean-up { + # Gzip Log files + find ${RCLONE_LOGS} -type f ! -name '*.gz' -exec pigz "{}" \; + # remove the pid file + rm -f ${PIDFILE} + # exit with clean code + exit 0 +} -# Software Backups -${RCLONE_COMMAND} "${RCLONE_LOGS}/software/rclone_software_`date +%Y%m%d-%H%M%S`.log" --backup-dir gauntnas:Deleted/`date +%Y%m%d-%H%M%S`/Software/ sync /mnt/data-pool/software/ gauntnas:Software +# Look for exits in the program and make sure to call the clean-up function +trap clean-up SIGHUP SIGINT SIGTERM -# NextCloud files backed up to both Google Drive and BackBlaze B2 +# Check to see if app is running or not +if [ -f ${PIDFILE} ]; then + PID=$(cat "${PIDFILE}") + ps -p "${PID}" > /dev/null 2>&1 + if [ $? -eq 0 ]; then + # "Previous job, ${PID}, is already running" + exit 1 + else + ## Process not found assume not running + echo $$ > "${PIDFILE}" + if [ $? -ne 0 ]; then + # "Could not create PID file" + exit 1 + fi + fi +else + echo $$ > "${PIDFILE}" + if [ $? -ne 0 ]; then + # "Could not create PID file" + exit 1 + fi +fi + +# Upload EncFS encrypted media to Google Drive +${RCLONE_COMMAND} "${RCLONE_LOGS}/media/rclone_media_gd_`date +%Y%m%d-%H%M%S`.log" copy /mnt/media/plex/.local_media/ gd:Media + +# Upload rclone encrypted proxmox backups to Google Drive +${RCLONE_COMMAND} "${RCLONE_LOGS}/proxmox/rclone_proxmox_gd_`date +%Y%m%d-%H%M%S`.log" sync /mnt/data-pool/proxmox/dump gauntnas:"Backups/Proxmox Backups/" + +# Upload rclone encrypted software to Google Drive +${RCLONE_COMMAND} "${RCLONE_LOGS}/software/rclone_software_gd_`date +%Y%m%d-%H%M%S`.log" --backup-dir gauntnas:Deleted/`date +%Y%m%d-%H%M%S`/Software/ sync /mnt/data-pool/software/ gauntnas:Software + +# Upload rclone encrypted Nextcloud files to Google Drive and BackBlaze B2 ${RCLONE_COMMAND} "${RCLONE_LOGS}/nextcloud/rclone_nextcloud_gd_`date +%Y%m%d-%H%M%S`.log" sync /mnt/data-pool/nextcloud/ gauntnas:Nextcloud -${RCLONE_COMMAND} "${RCLONE_LOGS}/nextcloud/rclone_nextcloud_b2__`date +%Y%m%d-%H%M%S`.log" --transfers 10 sync /mnt/data-pool/nextcloud/ b2-crypt: +${RCLONE_COMMAND} "${RCLONE_LOGS}/nextcloud/rclone_nextcloud_b2_`date +%Y%m%d-%H%M%S`.log" --transfers 10 --fast-list sync /mnt/data-pool/nextcloud/ b2-crypt: -# Gzip Log files -find ${RCLONE_LOGS} -type f ! -name '*.gz' -exec gzip "{}" \; \ No newline at end of file +# exit the program +clean-up \ No newline at end of file