|
@@ -1,85 +0,0 @@
|
|
|
-#!/bin/bash
|
|
|
-
|
|
|
-# ██╗ ██╗ ██████╗ ██╗ ██╗ ████████╗ ██████╗ ██╗ ██╗███████╗███████╗
|
|
|
-# ██║ ██║██╔═══██╗██║ ██║ ╚══██╔══╝██╔═══██╗ ██║ ██║██╔════╝██╔════╝
|
|
|
-# ███████║██║ ██║██║ █╗ ██║ ██║ ██║ ██║ ██║ ██║███████╗█████╗
|
|
|
-# ██╔══██║██║ ██║██║███╗██║ ██║ ██║ ██║ ██║ ██║╚════██║██╔══╝
|
|
|
-# ██║ ██║╚██████╔╝╚███╔███╔╝ ██║ ╚██████╔╝ ╚██████╔╝███████║███████╗
|
|
|
-#╚═╝ ╚═╝ ╚═════╝ ╚══╝╚══╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚══════╝
|
|
|
-#
|
|
|
-# 1. set exec perms
|
|
|
-# chmod +x pg_backup.sh
|
|
|
-# 2. run .pg_backup db_01 db_02 ... db_n
|
|
|
-#
|
|
|
-
|
|
|
-set -e
|
|
|
-
|
|
|
-# CONTAINER="database"
|
|
|
-CONTAINER="postgres"
|
|
|
-# DB_USER="odoo"
|
|
|
-DB_USER="postgres"
|
|
|
-DATE=$(date +%Y%m%d)
|
|
|
-TIME=$(date +%H%M%S)
|
|
|
-DAYS_TO_KEEP=7
|
|
|
-# BACKUP_PATH="/mnt/backup/local"
|
|
|
-# CLONE_PATH="/mnt/backup/nfs"
|
|
|
-BKP_PATH="/home/robert/test_pg_backup"
|
|
|
-SYNC_PATH="/home/robert/test_sync_backup"
|
|
|
-TMP_PATH="."
|
|
|
-
|
|
|
-# perform database backup if docker exist
|
|
|
-perform_backups()
|
|
|
-{
|
|
|
- if [ ! -x "$(command -v docker)" ]; then
|
|
|
- echo "cannot perform backup"
|
|
|
- exit 1
|
|
|
- fi
|
|
|
-
|
|
|
- local BKP_TODAY_PATH=$(printf "%s/backup_%s" "$BKP_PATH" "$DATE")
|
|
|
-
|
|
|
- if [ ! -d "$BKP_TODAY_PATH" ]; then
|
|
|
- mkdir "$BKP_TODAY_PATH"
|
|
|
- fi
|
|
|
-
|
|
|
- for DB_NAME in $@; do
|
|
|
- local TMP_FILE=$(printf "%s/%s_%s.tar" "$TMP_PATH" "$DB_NAME" "$TIME")
|
|
|
-
|
|
|
- docker exec $CONTAINER pg_dump -U $DB_USER -d $DB_NAME -F tar -C -b -c -f $TMP_FILE
|
|
|
- docker cp $CONTAINER:$TMP_FILE $BKP_TODAY_PATH
|
|
|
- docker exec $CONTAINER rm $TMP_FILE
|
|
|
- done
|
|
|
-}
|
|
|
-
|
|
|
-# delete old backups
|
|
|
-delete_old_backups()
|
|
|
-{
|
|
|
- find $1 -maxdepth 1 -type d -name "backup_*" -mtime +$2 -exec rm -rf '{}' ';'
|
|
|
-}
|
|
|
-
|
|
|
-# sync two backup paths
|
|
|
-local_sync_backups_path()
|
|
|
-{
|
|
|
- if [ ! -x "$(command -v rsync)" ]; then
|
|
|
- echo "cannot sync backups path"
|
|
|
- exit 1
|
|
|
- fi
|
|
|
-
|
|
|
- rsync -arz $1 $2
|
|
|
-}
|
|
|
-
|
|
|
-# sync two backup paths remotely
|
|
|
-remote_sync_backups_path()
|
|
|
-{
|
|
|
- if [ ! -x "$(command -v rsync)" ]; then
|
|
|
- echo "cannot sync backups path"
|
|
|
- exit 1
|
|
|
- fi
|
|
|
-
|
|
|
- rsync -arz "ssh -p $1" "$2@$3:$4" $5
|
|
|
-}
|
|
|
-
|
|
|
-perform_backups $@
|
|
|
-delete_old_backups $BKP_PATH $DAYS_TO_KEEP
|
|
|
-sync_local_backups_path $BKP_PATH $SYNC_PATH
|
|
|
-
|
|
|
-exit 0
|