[Docker Backup Script v1.1]
- Made post-backup tasks reusable.
This commit is contained in:
+26
-32
@@ -1,10 +1,13 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
#---------[ User configurable ]---------#
|
||||||
DOCKER_UID=1034
|
DOCKER_UID=1034
|
||||||
DOCKER_GID=100
|
DOCKER_GID=100
|
||||||
|
ROOT_BACKUP_PREFIX="_backups"
|
||||||
|
#-----------[ Do not modify ]-----------#
|
||||||
DT_STAMP=$(date +"%Y-%m-%d_%H:%M:%S")
|
DT_STAMP=$(date +"%Y-%m-%d_%H:%M:%S")
|
||||||
|
|
||||||
function update_perms() {
|
function _update_perms() {
|
||||||
if [ -d $1 ]; then
|
if [ -d $1 ]; then
|
||||||
chown $DOCKER_UID:$DOCKER_GID -R $1
|
chown $DOCKER_UID:$DOCKER_GID -R $1
|
||||||
else
|
else
|
||||||
@@ -12,51 +15,52 @@ function update_perms() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function list_backups() {
|
function _list_backups() {
|
||||||
tree -sh $1
|
tree -sh $1
|
||||||
}
|
}
|
||||||
|
|
||||||
function create_backup_dirs() {
|
function _create_backup_dirs() {
|
||||||
for var in "$@"
|
for var in "$@"
|
||||||
do
|
do
|
||||||
if ! [ -d $var ]; then
|
if ! [ -d $var ]; then
|
||||||
mkdir $var
|
mkdir $var
|
||||||
update_perms $var
|
_update_perms $var
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function rotate_backups() {
|
function _rotate_backups() {
|
||||||
find $1 -type d -mtime +7 -delete
|
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() {
|
function bookstack() {
|
||||||
APP_PATH=$1
|
APP_PATH=$1
|
||||||
CTR_NAME="Bookstack"
|
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
|
CTR_BACKUP_PATH=$ROOT_CTR_BACKUP_PATH/$DT_STAMP
|
||||||
DB_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_db.sql
|
DB_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_db.sql
|
||||||
APP_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_app.tgz
|
APP_BACKUP_FILE=$CTR_BACKUP_PATH/bookstack_app.tgz
|
||||||
|
|
||||||
# Print Container Name
|
|
||||||
echo "Backing up $CTR_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
|
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
|
tar -czf $APP_BACKUP_FILE -P $APP_PATH/app_data/www
|
||||||
|
|
||||||
# Change Permissions
|
_post_backup_cleanup $ROOT_CTR_BACKUP_PATH
|
||||||
update_perms $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 "Finished backing up $CTR_NAME"
|
||||||
echo "-----------------------------"
|
echo "-----------------------------"
|
||||||
echo
|
echo
|
||||||
@@ -65,36 +69,26 @@ function bookstack() {
|
|||||||
function gogs() {
|
function gogs() {
|
||||||
APP_PATH=$1
|
APP_PATH=$1
|
||||||
CTR_NAME="Gogs"
|
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
|
CTR_BACKUP_PATH=$ROOT_CTR_BACKUP_PATH/$DT_STAMP
|
||||||
LFS_BACKUP_FILE=$CTR_BACKUP_PATH/gogs_lfs.tgz
|
LFS_BACKUP_FILE=$CTR_BACKUP_PATH/gogs_lfs.tgz
|
||||||
|
|
||||||
# Print Container Name
|
|
||||||
echo "Backing up $CTR_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
|
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
|
mv $APP_PATH/data/tmp/*.zip $CTR_BACKUP_PATH
|
||||||
tar -czf $LFS_BACKUP_FILE -P $APP_PATH/data/gogs/data/lfs-objects
|
tar -czf $LFS_BACKUP_FILE -P $APP_PATH/data/gogs/data/lfs-objects
|
||||||
|
|
||||||
# Change Permissions
|
_post_backup_cleanup $ROOT_CTR_BACKUP_PATH
|
||||||
update_perms $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 "Finished backing up $CTR_NAME"
|
||||||
echo "-----------------------------"
|
echo "-----------------------------"
|
||||||
echo
|
echo
|
||||||
}
|
}
|
||||||
|
|
||||||
echo "Docker Backup Script v1.0"
|
echo "Docker Backup Script v1.1"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
bookstack "/volume1/Docker/bookstack"
|
bookstack "/volume1/Docker/bookstack"
|
||||||
|
|||||||
Reference in New Issue
Block a user