Files
Scripts/docker_backup.sh
Dunestorm 14e0cc4891 [Docker Backup Script v1.1.0.1]
- Fixed cleanup command so that it deletes directories recursively.
2024-05-01 22:58:34 +01:00

95 lines
2.1 KiB
Bash

#!/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"