mirror of
https://github.com/caprover/caprover
synced 2025-12-12 06:15:40 +00:00
Improved backup script
This commit is contained in:
@@ -1,15 +1,55 @@
|
||||
#!/bin/bash
|
||||
|
||||
# This may cause data corruption if your volumes are in active use!!
|
||||
# https://stackoverflow.com/questions/36273665/what-does-set-x-do
|
||||
set -x
|
||||
|
||||
mkdir -p /backup-vols
|
||||
|
||||
### STEP 1: turning off all services to avoid data corruption
|
||||
|
||||
all_services=$(docker volume ls --quiet)
|
||||
for srv in $all_services
|
||||
do
|
||||
echo "Service: $srv"
|
||||
docker service scale $srv=0 -d
|
||||
done
|
||||
|
||||
echo "Turning off all services..."
|
||||
echo "Waiting 10 seconds until all services are scaled to zero..."
|
||||
sleep 10
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### STEP 2: Creating the backup
|
||||
|
||||
backup_directory=/backup-vols/$(date +%Y_%m_%d_%H_%M_%S)
|
||||
|
||||
mkdir -p $backup_directory
|
||||
|
||||
vols=$(docker volume ls --quiet)
|
||||
|
||||
for vol in $vols
|
||||
for VOL_NAME_TO_BACKUP in $vols
|
||||
do
|
||||
echo "Volume: $vol"
|
||||
pathToMount=($(docker volume inspect $vol --format {{.Mountpoint}}))
|
||||
tar -cf /backup-vols/$vol-$(date +%Y_%m_%d_%H_%M_%S).tar -C $pathToMount .
|
||||
echo "Volume: $VOL_NAME_TO_BACKUP"
|
||||
docker run -it --rm -v $VOL_NAME_TO_BACKUP:/volume -v $backup_directory:/backup alpine \
|
||||
tar -cf /backup/$VOL_NAME_TO_BACKUP.tar -C /volume ./
|
||||
echo ================================
|
||||
done
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### STEP 3: turning on all services that we disabled in STEP 1
|
||||
|
||||
echo "Turning on all services..."
|
||||
|
||||
for srv in $all_services
|
||||
do
|
||||
echo "Service: $srv"
|
||||
docker service scale $srv=1 -d
|
||||
done
|
||||
|
||||
|
||||
set +x
|
||||
Reference in New Issue
Block a user