Skip to content

Instantly share code, notes, and snippets.

@deanproctor
Created July 21, 2016 21:14
Show Gist options
  • Save deanproctor/cc79246332254b849ae50c366d7cb4a3 to your computer and use it in GitHub Desktop.
Save deanproctor/cc79246332254b849ae50c366d7cb4a3 to your computer and use it in GitHub Desktop.
Script to demonstrate automated Couchbase backups using cbbackupmgr
#!/bin/bash
ARCHIVE=/backup
REPO=local
HOST=localhost
USERNAME=Administrator
PASSWORD=password
THREADS=4
RESTOREPOINTS=3
CBBACKUPMGR=/opt/couchbase/bin/cbbackupmgr
BACKUPREGEX="[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}_[0-9]{2}_[0-9]{2}.[0-9]{9}Z"
# Running backup
CMD="${CBBACKUPMGR} backup --archive ${ARCHIVE} --repo ${REPO} --host couchbase://${HOST} --username ${USERNAME} --password ${PASSWORD} --threads ${THREADS}"
echo -e "Running backup...\nCommand: ${CMD}"
$CMD
# Compacting the backup
BACKUPLIST=$(${CBBACKUPMGR} list --archive ${ARCHIVE} --repo ${REPO} | awk '{print $NF}' | grep -E ${BACKUPREGEX})
LASTBACKUP=$(echo "${BACKUPLIST}" | sed '$!d')
CMD="${CBBACKUPMGR} compact --archive ${ARCHIVE} --repo ${REPO} --backup ${LASTBACKUP}"
echo -e "Compacting the backup...\nCommand: ${CMD}"
$CMD
# Merging old backups
COUNT=$(echo "${BACKUPLIST}" | wc -l)
if [ "$COUNT" -gt "$RESTOREPOINTS" ]; then
START=$(echo "${BACKUPLIST}" | sed -n 1p)
END=$(echo "${BACKUPLIST}" | sed -n $((1+COUNT-RESTOREPOINTS))p)
CMD="${CBBACKUPMGR} merge --archive ${ARCHIVE} --repo ${REPO} --start ${START} --end ${END}"
echo -e "Merging old backups...\nCommand: ${CMD}"
$CMD
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment