Skip to content

Instantly share code, notes, and snippets.

@Panthro
Created May 21, 2019 11:02
Show Gist options
  • Save Panthro/930e53122bd72fd7140e086ab9e0b071 to your computer and use it in GitHub Desktop.
Save Panthro/930e53122bd72fd7140e086ab9e0b071 to your computer and use it in GitHub Desktop.
Rancher2 backup on Google Drive
#!/bin/bash
#RANCHER_SERVER_NAME=$(docker ps -a --format "{{.Image}} {{.Names}}" | grep -i "rancher/rancher" | cut -d' ' -f2)
RANCHER_SERVER_NAME=rancher-server
TODAY_DATE=$(date +%Y%m%d)
RANCHER_COPY_NAME=rancher-data-${TODAY_DATE}
CREDENTIALS_PATH=~/secrets
BACKUP_PATH=~/backup
RANCHER_BACKUP_FILE_BASE=rancher-data-backup
RANCHER_BACKUP_FILE=${RANCHER_BACKUP_FILE_BASE}-${TODAY_DATE}.tar.gz
USE_GDRIVE=0
if [ "$1" = "--gdrive" ]; then
if [[ ! -f "${CREDENTIALS_PATH}/token.json" || ! -f "${CREDENTIALS_PATH}/credentials.json" ]]; then
echo "[!] Error token.json and/or credentials.json missing in ${CREDENTIALS_PATH}"
exit 1
fi
USE_GDRIVE=1
docker pull d0whc3r/gdrive:latest
fi
mkdir -p ${BACKUP_PATH}
docker pull rancher/rancher:latest
docker stop ${RANCHER_SERVER_NAME}
docker create --volumes-from ${RANCHER_SERVER_NAME} --name ${RANCHER_COPY_NAME} rancher/rancher:latest
docker run --rm --volumes-from ${RANCHER_COPY_NAME} -v ${BACKUP_PATH}:/backup:z alpine tar zcf /backup/${RANCHER_BACKUP_FILE} /var/lib/rancher
docker start ${RANCHER_SERVER_NAME}
docker rm -f ${RANCHER_COPY_NAME}
if [ ${USE_GDRIVE} -eq 1 ]; then
docker run --rm -it -v ${BACKUP_PATH}:/backup:ro -v ${CREDENTIALS_PATH}:/app/secrets d0whc3r/gdrive:latest -b /backup/${RANCHER_BACKUP_FILE} -c -f rancher-backup -r -l
fi
# Clean older
find ${BACKUP_PATH} -name "${RANCHER_BACKUP_FILE_BASE}*" -mtime +5 -exec rm -fr {} \;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment