diff --git a/docker_backup.sh b/docker_backup.sh new file mode 100644 index 0000000..fd41a1b --- /dev/null +++ b/docker_backup.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +DOCKER_UID=1034 +DOCKER_GID=100 +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() { + du -h $1 +} + +function create_backup_dir() { + for var in "$@" + do + if ! [ -d $var ]; then + mkdir $var + update_perms $var + fi + done +} + +function rotate_backups() { + find $1 -type d -mtime +7 -delete +} + +function bookstack() { + APP_PATH=$1 + CTR_NAME="Bookstack" + ROOT_CTR_BACKUP_PATH=$APP_PATH/_backups + 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_dir $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 $DB_BACKUP_FILE + update_perms $APP_BACKUP_FILE + + # List Backups + list_backups $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 + +bookstack "/volume1/Docker/bookstack" \ No newline at end of file