#!/bin/bash #---------[ User configurable ]---------# DOCKER_UID=1034 DOCKER_GID=100 ROOT_BACKUP_PREFIX="_backups" #-----------[ Do not modify ]-----------# DT_STAMP=$(date +"%Y-%m-%d_%H:%M:%S") function _update_perms() { if [ -d $1 ]; then chown $DOCKER_UID:$DOCKER_GID -R $1 else chown $DOCKER_UID:$DOCKER_GID $1 fi } function _list_backups() { tree -sh $1 } function _create_backup_dirs() { for var in "$@" do if ! [ -d $var ]; then mkdir $var _update_perms $var fi done } function _rotate_backups() { find $1 -type d -mtime +6 -exec rm -rf {} \; } function _post_backup_cleanup() { # Change Permissions _update_perms $1 # List Backups _list_backups $1 # Rotate Backups _rotate_backups $1 } function bookstack() { APP_PATH=$1 CTR_NAME="Bookstack" ROOT_CTR_BACKUP_PATH=$APP_PATH/$ROOT_BACKUP_PREFIX CTR_BACKUP_PATH=$ROOT_CTR_BACKUP_PATH/$DT_STAMP DB_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_db.sql APP_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_app.tgz echo "Backing up $CTR_NAME..." _create_backup_dirs $ROOT_CTR_BACKUP_PATH $CTR_BACKUP_PATH docker exec bookstack_db /usr/bin/mariadb-dump -u root -p bookstackapp --password=nwb9buaBJX7bxt5pnk > $DB_BACKUP_FILE tar -czf $APP_BACKUP_FILE -P $APP_PATH/app_data/www _post_backup_cleanup $ROOT_CTR_BACKUP_PATH echo "Finished backing up $CTR_NAME" echo "-----------------------------" echo } function gogs() { APP_PATH=$1 CTR_NAME="Gogs" ROOT_CTR_BACKUP_PATH=$APP_PATH/$ROOT_BACKUP_PREFIX CTR_BACKUP_PATH=$ROOT_CTR_BACKUP_PATH/$DT_STAMP LFS_BACKUP_FILE=$CTR_BACKUP_PATH/gogs_lfs.tgz echo "Backing up $CTR_NAME..." _create_backup_dirs $ROOT_CTR_BACKUP_PATH $CTR_BACKUP_PATH docker exec gogs /app/gogs/gogs backup -c /data/gogs/conf/app.ini --target /data/tmp mv $APP_PATH/data/tmp/*.zip $CTR_BACKUP_PATH tar -czf $LFS_BACKUP_FILE -P $APP_PATH/data/gogs/data/lfs-objects _post_backup_cleanup $ROOT_CTR_BACKUP_PATH echo "Finished backing up $CTR_NAME" echo "-----------------------------" echo } echo "Docker Backup Script v1.1.0.1" echo bookstack "/volume1/Docker/bookstack" gogs "/volume1/Docker/gogs"