commit 330ae34cc0542a3cde37dc79381fe612ee1f6559 Author: John Lancaster <32917998+jsl12@users.noreply.github.com> Date: Mon May 20 18:45:02 2024 -0500 initial commit diff --git a/restic_backup.sh b/restic_backup.sh new file mode 100755 index 0000000..4b53d9c --- /dev/null +++ b/restic_backup.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +SCRIPT_DIR=$(readlink -f $(dirname "${BASH_SOURCE[0]}")) +COMPOSE_FILE=$SCRIPT_DIR/docker-compose.yml + +SERVICES="server db" + +echo -n "Stopping containers..." +docker compose -f $COMPOSE_FILE stop $SERVICES 2>/dev/null +echo "Done" + +echo -n "Running backup..." +$SCRIPT_DIR/restic_command.sh backup /data "$@" +echo "Done" + +echo -n "Executing compose up..." +docker compose -f $COMPOSE_FILE up -d 2>/dev/null +echo "Done" + +echo -n "Pruning restic repo..." +$SCRIPT_DIR/restic_prune.sh 1>/dev/null +echo "Done" + +SPACE=$(du -hs /mnt/* | awk '{print $1}') +echo "Total space used: $SPACE" diff --git a/restic_command.sh b/restic_command.sh new file mode 100755 index 0000000..736bfb6 --- /dev/null +++ b/restic_command.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +set -e + +SCRIPT_DIR=$(readlink -f $(dirname "${BASH_SOURCE[0]}")) +DATA_DIR=$SCRIPT_DIR/data + +ENV_FILE=$SCRIPT_DIR/.env +source $ENV_FILE + +docker run -it --rm \ +--hostname $HOSTNAME \ +--env-file $ENV_FILE \ +-v /etc/localtime:/etc/localtime:ro \ +-v /etc/timezone:/etc/timezone:ro \ +-v $DATA_DIR:/data \ +-v $RESTIC_REPOSITORY:$RESTIC_REPOSITORY \ +restic/restic:latest "$@" diff --git a/restic_prune.sh b/restic_prune.sh new file mode 100755 index 0000000..be85fbe --- /dev/null +++ b/restic_prune.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +SCRIPT_DIR=$(readlink -f $(dirname "${BASH_SOURCE[0]}")) + +$SCRIPT_DIR/restic_command.sh forget --prune \ +--keep-last 5 \ +--keep-hourly 72 \ +--keep-daily 14 \ +--keep-weekly 8 \ +--keep-monthly 12 \ +--keep-yearly 7 diff --git a/restic_restore.sh b/restic_restore.sh new file mode 100755 index 0000000..a591857 --- /dev/null +++ b/restic_restore.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +SCRIPT_DIR=$(readlink -f $(dirname "${BASH_SOURCE[0]}")) +COMPOSE_FILE=$SCRIPT_DIR/docker-compose.yml + +echo "Stopping containers" +docker compose -f $COMPOSE_FILE stop 2>/dev/null + +SNAPSHOT_ID=${1:-latest} +$SCRIPT_DIR/restic_command.sh --verbose restore $SNAPSHOT_ID:/data --target /data + +echo "Executing compose up" +docker compose -f $COMPOSE_FILE up -d 2>/dev/null +echo "Done" \ No newline at end of file