Last active
June 16, 2016 19:41
-
-
Save authsec/42b3c5099e1cc45bc761c8bb6366ede8 to your computer and use it in GitHub Desktop.
Script to backup a remote directory to your local QNAP storage
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Script to periodically synchronize a remote directory with your | |
# local QNAP storage. | |
# Source folders/user on remote machine | |
BACKUP_SOURCE_USER="backup-user" | |
BACKUP_SOURCE_HOST="backuphost.example.com" | |
BACKUP_SOURCE_FOLDER="/backup/subdir" | |
# Directory to save the remote backup locally | |
BACKUP_SINK_FOLDER="/share/MD0_DATA/Qmultimedia/backup-dir" | |
# For grepping the available space | |
BACKUP_SHARE_MOUNT_POINT="/share/MD0_DATA" | |
SUBJ_PREFIX="[RSYNC BACKUP]" | |
SUBJECT_FAIL="${SUBJ_PREFIX} Synchronization unsuccessful!" | |
SUBJECT_SUCCESS="${SUBJ_PREFIX} Synchronization successful!" | |
MAIL_TO="hansi@example.com" | |
MAIL_FROM="hansi-machine@example.com" | |
MSG_CONTENT_FILE="/tmp/email_body.txt" | |
RSYNC_CONTENT_FILE="/tmp/rsyncContent.txt" | |
# Sends a mail message | |
# $1 = subject | |
# $2 = to | |
# $3 = from | |
# $4 = msg | |
send_mail() | |
{ | |
local tmpfile="/tmp/sendmail.tmp" | |
/bin/echo -e "Subject: $1\r" > "$tmpfile" | |
/bin/echo -e "To: $2\r" >> "$tmpfile" | |
/bin/echo -e "From: $3\r" >> "$tmpfile" | |
/bin/echo -e "\r" >> "$tmpfile" | |
if [ -f "$4" ]; then | |
cat "$4" >> "$tmpfile" | |
/bin/echo -e "\r\n" >> "$tmpfile" | |
else | |
/bin/echo -e "$4\r\n" >> "$tmpfile" | |
fi | |
/usr/sbin/sendmail -t < "$tmpfile" | |
rm $tmpfile | |
} | |
/bin/echo -e "Backup started at: $(date)\n" > ${MSG_CONTENT_FILE} | |
/bin/echo "Space available on backup disk (before backup)" >> ${MSG_CONTENT_FILE} | |
/bin/echo "$(df -h | head -n1)" >> ${MSG_CONTENT_FILE} | |
/bin/echo "$(df -h | grep ${BACKUP_SHARE_MOUNT_POINT})" >> ${MSG_CONTENT_FILE} | |
/bin/echo -e "\n" >> ${MSG_CONTENT_FILE} | |
/bin/echo -e "The following output was produced by the rsync command:\n" > ${RSYNC_CONTENT_FILE} | |
/usr/bin/rsync -azhv ${BACKUP_SOURCE_USER}@${BACKUP_SOURCE_HOST}:${BACKUP_SOURCE_FOLDER} ${BACKUP_SINK_FOLDER} >> ${RSYNC_CONTENT_FILE} | |
if [ $? -eq 0 ] | |
then | |
SUBJECT=${SUBJECT_SUCCESS} | |
else | |
SUBJECT=${SUBJECT_FAIL} | |
fi | |
/bin/echo -e "Backup ended at: $(date)\n" >> ${MSG_CONTENT_FILE} | |
/bin/echo "Space available on backup disk (after backup)" >> ${MSG_CONTENT_FILE} | |
/bin/echo "$(df -h | head -n1)" >> ${MSG_CONTENT_FILE} | |
/bin/echo "$(df -h | grep ${BACKUP_SHARE_MOUNT_POINT})" >> ${MSG_CONTENT_FILE} | |
/bin/echo -e "\n" >> ${MSG_CONTENT_FILE} | |
/bin/cat ${RSYNC_CONTENT_FILE} >> ${MSG_CONTENT_FILE} | |
send_mail "${SUBJECT}" "${MAIL_TO}" "${MAIL_FROM}" ${MSG_CONTENT_FILE} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment