A small bash script I wrote to have incremental backups done on a unix server, and then pushed to a Windows File system. On the fileserver, we add this directory to the normal backup.
This is on a mail server, where emails are stored in MailDir format. We create weekly full backups on sunday, and daily incremental. This script is called daily at night from a cron job. Gotta love the scripting abilities of bash.
It might help you out, so here goes:
#!/bin/bash # backup script is doing following items # dump all incremental email into a backup file, gzip the backup file and # move the file to an external file server START_TIME=`/bin/date` echo "backup started at: ${START_TIME}" DOW_N=`/bin/date +"%w"` # number, 0 (sun), 1 (mon) DOW_T=`/bin/date +"%F"` TO_BACKUP="/opt/maildata/" TEMP_FILE="/tmp/${DOW_T}_mail_backup.tar" BACKUP_LOG="/tmp/mail.backup" FILE_SERVER="/mnt/fileserver/" # mounted over SMB # if it's a sunday, delete the incremental file and take a full backup if [ ${DOW_N} -eq "0" ]; then /bin/rm ${BACKUP_LOG} fi /bin/tar -c -f ${TEMP_FILE} --listed-incremental=${BACKUP_LOG} ${TO_BACKUP} /bin/gzip -f ${TEMP_FILE} FILE_SIZE=`/bin/ls -lah ${TEMP_FILE}.gz | awk '{ print $5 }'` /bin/mv ${TEMP_FILE}.gz ${FILE_SERVER} ## report, this goes in an email through cron END_TIME=`/bin/date`; export END_TIME echo "backup ended at: ${END_TIME}" echo "data moved: ${FILE_SIZE}"
Leave a Reply