Scripts

Deprecated

A collection of useful Scripts.

Table of Contents

  1. Scripts
  2. Pre and post backup scripts.
    1. before_volume_backup.sh
    2. after_volume_backup.sh
    3. before_storage_backup.sh
    4. after_storage_backup.sh

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