Scripts
Deprecated
A collection of useful Scripts.
Table of Contents
Pre and post backup scripts.
before_volume_backup.sh
#!/bin/bash
set -Eeu
# create lvm snapshot
lvcreate --size 63G --snapshot --name root_snap_$KOPIA_SNAPSHOT_ID /dev/fedora/root
# mount snapshot
mkdir -p /mnt/root_snap_$KOPIA_SNAPSHOT_ID/
mount -o nouuid /dev/fedora/root_snap_$KOPIA_SNAPSHOT_ID /mnt/root_snap_$KOPIA_SNAPSHOT_ID/
# redirect kopia to mounted snapshot
echo KOPIA_SNAPSHOT_PATH=/mnt/root_snap_$KOPIA_SNAPSHOT_ID/volume1
after_volume_backup.sh
#!/bin/bash
set -Eeu
# unmount snapshot and remove volume
umount /mnt/root_snap_$KOPIA_SNAPSHOT_ID/
rm -r /mnt/root_snap_$KOPIA_SNAPSHOT_ID/
lvremove -y /dev/fedora/root_snap_$KOPIA_SNAPSHOT_ID
before_storage_backup.sh
#!/bin/bash
set -Eeu
# directories
DB_DUMP_DIR='/storage/backups/db_dumps'
# Nextcloud
NEXTCLOUD_DB_CONTAINER_NAME=''
NEXTCLOUD_DB_USER=''
NEXTCLOUD_DB_NAME=''
NEXTCLOUD_DB_PASS=''
# put nextcloud into maintenance mode
docker exec -d nextcloud occ maintenance:mode --on
# create a new SQL dump of all DBs
docker exec $NEXTCLOUD_DB_CONTAINER_NAME mysqldump --single-transaction --default-character-set=utf8mb4 -h localhost -u $NEXTCLOUD_DB_USER -p$NEXTCLOUD_DB_PASS nextcloud > $DB_DUMP_DIR/nextcloud-sqlbkp_`date +"%Y%m%d_%H%M"`.bak
# Housekeeping: Remove all dumps older than 7 days
find $DB_DUMP_DIR -type f -mtime +7 -delete
# create btrfs snapshot
btrfs subvolume snapshot -r /storage /storage/snapshots/storage_snapshot_$KOPIA_SNAPSHOT_ID
# resume nextcloud
docker exec -d nextcloud occ maintenance:mode --off
# redirect kopia to snapshot dir
echo KOPIA_SNAPSHOT_PATH=/storage/snapshots/storage_snapshot_$KOPIA_SNAPSHOT_ID
after_storage_backup.sh
#!/bin/bash
set -Eeu
# remove btrfs snapshot
btrfs subvolume delete /storage/snapshots/storage_snapshot_$KOPIA_SNAPSHOT_ID