Originally published December 22, 2016 @ 11:06 pm
This is a simple wrapper for the awesome rsync-time-backup script by Laurent Cozic. Through clever use of hard links rsync-time-backup greatly speeds up incremental backups and saves disk space.
The wrapper script is for my internal NAS environment. The script selects either production or Dev/QA NAS based on the server name. The script will then mount the correct NFS share, run various checks, prep the target folder and launch the backup. You can download the script here.
#!/bin/bash # | # ___/"\___ # __________/ o \__________ # (I) (G) \___/ (O) (R) # 2016-12-22 # ---------------------------------------------------------------------------- # Salt wrapper for rsync-time-backup # https://github.com/laurent22/rsync-time-backup # ---------------------------------------------------------------------------- # configure() { url="https://raw.githubusercontent.com/laurent22/rsync-time-backup/master/rsync_tmbackup.sh" this_host=`/bin/hostname | awk -F'.' '{print $1}'` if [ $(grep -c "^prod" <<<${this_host}) -eq 1 ] || [ "${this_host}" == "amidala" ] then nashost="prodnas01.krazyworks.com.local" nasshare="/nfspool_prod" else nashost="devqanas01.krazyworks.com.local" nasshare="/nfspool_devqa" fi mountdir="/nfspool" backupdir="rsync_time_backup" basedir="/var/adm/bin" if [ ! -d "${basedir}" ] ; then mkdir -p "${basedir}" ; fi this_time=$(date +'%Y-%m-%d %H:%M:%S') this_time_epoch=$(date -d "`echo ${this_time}`" "+%s") rsyncbackup="${basedir}/rsync_tmbackup.sh" if [ ! -x "${rsyncbackup}" ] || [ ! -s "${rsyncbackup}" ] then wget --no-check-certificate -O "${rsyncbackup}" "${url}" 2>/dev/null chmod 755 "${rsyncbackup}" 2>/dev/null fi } verify() { if [ ! -x "${rsyncbackup}" ] then echo "Rsync backup script ${rsyncbackup} not found. Exiting..." exit 1 fi if [ ! -d "${mountdir}" ] then mkdir -p "${mountdir}" fi if [ `which mountpoint >/dev/null 2>&1 ; echo $?` -eq 0 ] then mountstatus=$(/bin/mountpoint "${mountdir}" >/dev/null 2>&1 ; echo $?) if [ ${mountstatus} -ne 0 ] then mount "${nashost}:${nasshare}" "${mountdir}" mountstatus=$(/bin/mountpoint "${mountdir}" >/dev/null 2>&1 ; echo $?) if [ ${mountstatus} -ne 0 ] then echo "Destination ${mountdir} is not mounted. Exiting..." exit 1 fi fi else if [ `df "${mountdir}" | grep -c ${nashost}` -eq 0 ] then mount "${nashost}:${nasshare}" "${mountdir}" if [ `df "${mountdir}" | grep -c ${nashost}` -eq 0 ] then echo "Destination ${mountdir} is not mounted. Exiting..." exit 1 fi fi fi if [ ! -d "${mountdir}/${backupdir}" ] then echo "Destination folder ${mountdir}/${backupdir} not found on ${nashost}. Exiting..." exit 1 fi if [ ! -d "${mountdir}/${backupdir}/${this_host}" ] then mkdir -p "${mountdir}/${backupdir}/${this_host}" fi if [ ! -f "${mountdir}/${backupdir}/${this_host}/backup.marker" ] then touch "${mountdir}/${backupdir}/${this_host}/backup.marker" fi } do_backup() { nohup ${rsyncbackup} // "${mountdir}/${backupdir}/${this_host}" </dev/null >/dev/null 2>&1 & } do_check() { if [ -f "${mountdir}/${backupdir}/${this_host}/backup.inprogress" ] then echo "Another backup is already in progress. Exiting..." exit 1 fi } # RUNTIME configure verify do_check do_backup
Experienced Unix/Linux System Administrator with 20-year background in Systems Analysis, Problem Resolution and Engineering Application Support in a large distributed Unix and Windows server environment. Strong problem determination skills. Good knowledge of networking, remote diagnostic techniques, firewalls and network security. Extensive experience with engineering application and database servers, high-availability systems, high-performance computing clusters, and process automation.