Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #-------------------------------------------------------------------------------
- # dit script backupt de /root/ /home/ /etc/ en /usr/ en de /data
- # flip hess 2011 06 20 [email protected]
- #
- #-------------------------------------------------------------------------------
- # Global variables:
- PATH='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
- SCRIPT_PATH="${0}"
- HOST="${1}"
- # Functions:
- # The main function.
- function fMain()
- {
- # source and destination:
- local DEST_DIR="/backups/${HOST}"
- local SOURCEDIRS='etc root usr home var data'
- # tunnel settings:
- local SSH='ssh -A'
- local SSHPORT='2222'
- # ssh settings:
- local KEYCHAIN_FILE='/root/.keychain/backup-sh'
- # rsync settings:
- local RSYNC="rsync"
- local RUSER='root'
- # time settings:
- local TIME_STAMP="$(date '+%F_%H.%M.%S')"
- # Check whether arguments are given:
- if [ ${#} != 1 ]
- then
- fShowUsage
- return 1
- fi
- # Load SSH agent environment variables:
- if [ -f "${KEYCHAIN_FILE}" ]
- then
- . "${KEYCHAIN_FILE}"
- else
- echo "\"${KEYCHAIN_FILE}\" does not exist!"
- return 3
- fi
- # Check target directory:
- if [ ! -d "${DEST_DIR}" ]
- then
- echo "Backup directory \"${DEST_DIR}\" does not exist!"
- return 2
- fi
- # Check whether SSH to host without password is possible:
- if ( ! ${SSH} -p${SSHPORT} -o 'BatchMode yes' -qq ${USER}@${HOST} exit 0 )
- then
- echo "No SSH access to host ${HOST}"
- return 4
- fi
- # ALL DIRS BACKUPPEN
- # for loopje:
- for SOURCEDIR in ${SOURCEDIRS}
- do
- # Check target directory:
- if [ ! -d ${DEST_DIR}/${SOURCEDIR} ]
- then
- echo "${DEST_DIR}/${SOURCEDIR} does not exist, creating..."
- mkdir -p ${DEST_DIR}/${SOURCEDIR}
- # check exit code
- if [ ${?} != 0 ]
- then
- echo "Failed to create ${DEST_DIR}/${SOURCEDIR}, skipping....."
- continue
- fi
- fi
- # rsync dir to backupdir location:
- ${RSYNC} --exclude '.gvfs' -avz -e "${SSH} -p${SSHPORT}" ${RUSER}@${HOST}:/${SOURCEDIR} ${DEST_DIR}/${SOURCEDIR}
- # check if succeeded
- if [ ${?} != 0 ]
- then
- echo " offdisk backup of ${SOURCEDIR} on \"${TIME_STAMP}\" has failed "
- continue
- fi
- done
- return 0
- }
- # Shows usage.
- function fShowUsage()
- {
- echo "Usage: ${SCRIPT_PATH} HOST"
- return 0
- }
- # Start the program:
- fMain "${@}"
- # Exit with previous return code:
- exit "${?}"
Advertisement
Add Comment
Please, Sign In to add comment