tweak Hetzner backup script
This commit is contained in:
parent
896ccdbfa0
commit
a4fe799e30
2 changed files with 66 additions and 17 deletions
|
@ -2,16 +2,22 @@
|
||||||
|
|
||||||
# Backup Hetzner Storagebox (Alpha) used by VPS for service data.
|
# Backup Hetzner Storagebox (Alpha) used by VPS for service data.
|
||||||
|
|
||||||
# USER=thomas
|
|
||||||
# export HOME=/home/thomas
|
|
||||||
# export XDG_RUNTIME_DIR=/run/user/1000
|
|
||||||
# source /home/thomas/.env
|
|
||||||
|
|
||||||
NAS_DEVICE_NAME="Hetzner Storagebox (Alpha)"
|
NAS_DEVICE_NAME="Hetzner Storagebox (Alpha)"
|
||||||
RCHAT_NOTIFIER="${HOME}/repos/utilities/rocketchat_notifier.sh"
|
RCHAT_NOTIFIER="${HOME}/repos/utilities/rocketchat_notifier.sh"
|
||||||
SOURCE_MOUNTPOINT="/media/hetzner-storagebox-alpha"
|
SOURCE_MOUNTPOINT="/media/hetzner-storagebox-alpha"
|
||||||
LOCAL_MOUNTPOINT="/media/my-passport"
|
LOCAL_MOUNTPOINT="/media/my-passport"
|
||||||
|
|
||||||
|
function clean_up() {
|
||||||
|
# Dismount NAS
|
||||||
|
echo "INFO Dismounting ${NAS_DEVICE_NAME}."
|
||||||
|
sudo umount /media/hetzner-storagebox-alpha/
|
||||||
|
|
||||||
|
# Turn on VPN
|
||||||
|
echo "INFO Re-connecting Mullvad VPN."
|
||||||
|
mullvad connect
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
# Turn off VPN
|
# Turn off VPN
|
||||||
echo "INFO Attempting backup of ${NAS_DEVICE_NAME} NAS device."
|
echo "INFO Attempting backup of ${NAS_DEVICE_NAME} NAS device."
|
||||||
echo "INFO Checking VPN status."
|
echo "INFO Checking VPN status."
|
||||||
|
@ -36,7 +42,7 @@ else
|
||||||
else
|
else
|
||||||
$RCHAT_NOTIFIER "backups" "error" \
|
$RCHAT_NOTIFIER "backups" "error" \
|
||||||
"Could not complete scheduled backup of ${NAS_DEVICE_NAME}. Local backup disk (/media/my-passport) not mounted."
|
"Could not complete scheduled backup of ${NAS_DEVICE_NAME}. Local backup disk (/media/my-passport) not mounted."
|
||||||
exit
|
clean_up
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -49,14 +55,14 @@ if mountpoint -q ${SOURCE_MOUNTPOINT}; then
|
||||||
else
|
else
|
||||||
$RCHAT_NOTIFIER "backups" "error" \
|
$RCHAT_NOTIFIER "backups" "error" \
|
||||||
"Could not complete scheduled ${NAS_DEVICE_NAME} backup. Source disk (/media/hetzner-storagebox-alpha) not mounted."
|
"Could not complete scheduled ${NAS_DEVICE_NAME} backup. Source disk (/media/hetzner-storagebox-alpha) not mounted."
|
||||||
exit
|
clean_up
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Create backup (ignoring lock files)
|
# Create backup (ignoring lock files)
|
||||||
|
|
||||||
echo "INFO Beginning backup."
|
echo "INFO Beginning backup."
|
||||||
|
|
||||||
sudo rsync -rtv --progress --delete --no-perms \
|
sudo rsync -avzP --delete --no-perms \
|
||||||
--exclude="*.lock" \
|
--exclude="*.lock" \
|
||||||
--exclude="*.bleve/store/root.bolt" \
|
--exclude="*.bleve/store/root.bolt" \
|
||||||
--exclude="mongo/db/mongod.lock" \
|
--exclude="mongo/db/mongod.lock" \
|
||||||
|
@ -75,12 +81,4 @@ else
|
||||||
"Failed to create backup of ${NAS_DEVICE_NAME}: problem with rsync (exit code $STATUS)."
|
"Failed to create backup of ${NAS_DEVICE_NAME}: problem with rsync (exit code $STATUS)."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Dismount NAS
|
clean_up
|
||||||
echo "INFO Dismounting ${NAS_DEVICE_NAME}."
|
|
||||||
sudo umount /media/hetzner-storagebox-alpha/
|
|
||||||
|
|
||||||
# Turn on VPN
|
|
||||||
echo "INFO Re-connecting Mullvad VPN."
|
|
||||||
mullvad connect
|
|
||||||
|
|
||||||
exit
|
|
||||||
|
|
51
vps_mysql_backup.sh
Executable file
51
vps_mysql_backup.sh
Executable file
|
@ -0,0 +1,51 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Backup MYSQL dir on VPS
|
||||||
|
|
||||||
|
RCHAT_NOTIFIER="${HOME}/repos/utilities/rocketchat_notifier.sh"
|
||||||
|
|
||||||
|
TARGET_NAME="VPS: /data/mysql"
|
||||||
|
LOCAL_DISK_MOUNTPOINT="/media/my-passport"
|
||||||
|
LOCAL_DIR="${LOCAL_DISK_MOUNTPOINT}/vps_backups/mysql"
|
||||||
|
|
||||||
|
# function clean_up() {
|
||||||
|
# # Dismount NAS
|
||||||
|
# echo "INFO Dismounting ${NAS_DEVICE_NAME}."
|
||||||
|
# sudo umount /media/hetzner-storagebox-alpha/
|
||||||
|
|
||||||
|
# # Turn on VPN
|
||||||
|
# echo "INFO Re-connecting Mullvad VPN."
|
||||||
|
# mullvad connect
|
||||||
|
# exit
|
||||||
|
# }
|
||||||
|
|
||||||
|
# Check source disk is mounted
|
||||||
|
if mountpoint -q ${LOCAL_DISK_MOUNTPOINT}; then
|
||||||
|
echo "INFO Local disk /media/my-passport mounted. Proceeding."
|
||||||
|
else
|
||||||
|
echo "INFO Local disk not mounted. Mounting /media/my-passport."
|
||||||
|
sudo mount ${LOCAL_DISK_MOUNTPOINT}
|
||||||
|
if mountpoint -q ${LOCAL_MOUNTPOINT}; then
|
||||||
|
echo "INFO Mounted /media/my-passport"
|
||||||
|
else
|
||||||
|
$RCHAT_NOTIFIER "backups" "error" \
|
||||||
|
"Could not complete scheduled backup of ${TARGET_NAME}. Local backup disk (/media/my-passport) not mounted."
|
||||||
|
clean_up
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
rsync -avzP --delete \
|
||||||
|
thomas@systemsobcure.net:/data/mysql "${LOCAL_DIR}"
|
||||||
|
|
||||||
|
STATUS=$?
|
||||||
|
if [ $STATUS -eq 0 ]; then
|
||||||
|
$RCHAT_NOTIFIER "backups" "success" \
|
||||||
|
"Created backup of ${TARGET_NAME}."
|
||||||
|
# 23 = partial backup, 24 = some vanished files, both != major failure
|
||||||
|
elif [ $STATUS -eq 23 ] || [ $STATUS -eq 24 ]; then
|
||||||
|
$RCHAT_NOTIFIER "backups" "success" \
|
||||||
|
"Created backup of ${TARGET_NAME}. A few files could not be copied."
|
||||||
|
else
|
||||||
|
$RCHAT_NOTIFIER "backups" "error" \
|
||||||
|
"Failed to create backup of ${TARGET_NAME}: problem with rsync (exit code $STATUS)."
|
||||||
|
fi
|
Loading…
Add table
Reference in a new issue