diff --git a/docker_backup.sh b/docker_backup.sh index 3f1adbd..d5827bc 100644 --- a/docker_backup.sh +++ b/docker_backup.sh @@ -1,10 +1,13 @@ #!/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() { +function _update_perms() { if [ -d $1 ]; then chown $DOCKER_UID:$DOCKER_GID -R $1 else @@ -12,51 +15,52 @@ function update_perms() { fi } -function list_backups() { +function _list_backups() { tree -sh $1 } -function create_backup_dirs() { +function _create_backup_dirs() { for var in "$@" do if ! [ -d $var ]; then mkdir $var - update_perms $var + _update_perms $var fi done } -function rotate_backups() { +function _rotate_backups() { find $1 -type d -mtime +7 -delete } +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/_backups + 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 - # Print Container Name echo "Backing up $CTR_NAME..." - # Create Backup Paths - create_backup_dirs $ROOT_CTR_BACKUP_PATH $CTR_BACKUP_PATH + _create_backup_dirs $ROOT_CTR_BACKUP_PATH $CTR_BACKUP_PATH docker exec bookstack_db /usr/bin/mysqldump -u bookstack -p bookstackapp --password=nwb9buaBJX7bxt5pnk > $DB_BACKUP_FILE tar -czf $APP_BACKUP_FILE -P $APP_PATH/app_data/www - # Change Permissions - update_perms $ROOT_CTR_BACKUP_PATH + _post_backup_cleanup $ROOT_CTR_BACKUP_PATH - # List Backups - list_backups $ROOT_CTR_BACKUP_PATH - - # Rotate Backups - rotate_backups $ROOT_CTR_BACKUP_PATH - - # Print end of Backup echo "Finished backing up $CTR_NAME" echo "-----------------------------" echo @@ -65,36 +69,26 @@ function bookstack() { function gogs() { APP_PATH=$1 CTR_NAME="Gogs" - ROOT_CTR_BACKUP_PATH=$APP_PATH/_backups + 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 - # Print Container Name echo "Backing up $CTR_NAME..." - # Create Backup Paths - create_backup_dirs $ROOT_CTR_BACKUP_PATH $CTR_BACKUP_PATH + _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 - # Change Permissions - update_perms $ROOT_CTR_BACKUP_PATH + _post_backup_cleanup $ROOT_CTR_BACKUP_PATH - # List Backups - list_backups $ROOT_CTR_BACKUP_PATH - - # Rotate Backups - rotate_backups $ROOT_CTR_BACKUP_PATH - - # Print end of Backup echo "Finished backing up $CTR_NAME" echo "-----------------------------" echo } -echo "Docker Backup Script v1.0" +echo "Docker Backup Script v1.1" echo bookstack "/volume1/Docker/bookstack"