Skip to content

Instantly share code, notes, and snippets.

@xundeenergie
Created October 8, 2018 14:34
Show Gist options
  • Save xundeenergie/4665394a45bb08cc97e6f0b645ab6b16 to your computer and use it in GitHub Desktop.
Save xundeenergie/4665394a45bb08cc97e6f0b645ab6b16 to your computer and use it in GitHub Desktop.
Simple rsync-backup script
#!/bin/bash
BACKUP_DIR=/mnt/backup
TODAY="$(date +%YW%W_%u-%A)"
YESTERDAY="$(date -d Yesterday +%YW%W_%u-%A)"
DEST="${BACKUP_DIR}/${TODAY}"
LINK_DEST="${BACKUP_DIR}/${YESTERDAY}"
function rsync_func () {
SOURCE="${1}"
TARGET="${2}"
EXCLDES=$(for i in $EXCLUDES;do echo -n " --exclude=${i}";done)
if [ -e "${LINK_DEST}_${TARGET}" ]; then
LINK_DST="--link-dest=${LINK_DEST}_${TARGET}"
else
LINK_DST=""
fi
[ -e "${DEST}_${TARGET}" ] || mkdir -p "${DEST}_${TARGET}" || return $?
echo rsync -avz --delete $EXCLDES "$SOURCE" "${DEST}_${TARGET}" "${LINK_DST}"
rsync -avz $EXCLDES "${SOURCE}" "${DEST}_${TARGET}/" "${LINK_DST}/"
return $?
}
echo
echo "+--------------------------------------------------------------+"
echo "TODAY : $TODAY"
echo "YESTERDAY : $YESTERDAY"
echo "DEST : $DEST"
echo "LINK_DEST : $LINK_DEST"
echo Backup ansible
EXCLUDES='server-config .git .cache'
rsync_func /home/ansible ansible
echo Backup openvpn
EXCLUDES='.git'
rsync_func /etc/openvpn openvpn
echo Backup bind9
EXCLUDES='.git'
rsync_func /etc/bind bind9
echo Backup root
EXCLUDES='server-config .git .cache'
rsync_func /root root
echo Backup /usr/local/bin
rsync_func /usr/local/bin usr-local-bin
echo Backup packages
dpkg -l|awk '{print $2}' |gzip > "/mnt/backup/${TODAY}_packages.gz"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment