john

john / Generic backup script

Last active 3 months ago

Like 0

Backs up an sqlite database and application data and syncs it to a remote with rclone.

Revision 98c5f0b3b9b1ace95893d02481379228a44feaea

backup.sh Raw
1#!/usr/bin/env -S bash -eu
2
3DB_PATH="/cephfs/opengist/data/opengist.db"
4RCLONE_REMOTE="s4:backup-bucket-name/opengist"
5BACKUP_DB_PREFIX="opengist_db_"
6BACKUP_DB_SUFFIX=".sqlite"
7BACKUP_DB_FILENAME="$BACKUP_DB_PREFIX$(date +%Y%m%d_%H%M%S)$BACKUP_DB_SUFFIX"
8DATA_PATH="/cephfs/opengist/data"
9BACKUP_DATA_PREFIX="opengist_data_"
10BACKUP_DATA_SUFFIX=".tar.gz"
11BACKUP_DATA_FILENAME="$BACKUP_DATA_PREFIX$(date +%Y%m%d_%H%M%S)$BACKUP_DATA_SUFFIX"
12BACKUP_PATH="/cephfs/opengist/backup/"
13DAYS_TO_KEEP_LOCAL=7
14
15mkdir -p "$BACKUP_PATH"
16
17sqlite3 "$DB_PATH" ".backup \"$BACKUP_PATH/$BACKUP_DB_FILENAME\""
18
19tar -C $(dirname "$DATA_PATH") -cf "$BACKUP_PATH/$BACKUP_DATA_FILENAME" --exclude='./opengist.db' data
20
21rclone copyto "$BACKUP_PATH/$BACKUP_DB_FILENAME" "$RCLONE_REMOTE/$BACKUP_DB_PREFIX$BACKUP_DB_SUFFIX"
22rclone copyto "$BACKUP_PATH/$BACKUP_DATA_FILENAME" "$RCLONE_REMOTE/$BACKUP_DATA_PREFIX$BACKUP_DATA_SUFFIX"
23
24find "$BACKUP_PATH" -name "${BACKUP_DB_PREFIX}*${BACKUP_DB_SUFFIX}" -type f -mtime +$DAYS_TO_KEEP_LOCAL -delete
25find "$BACKUP_PATH" -name "${BACKUP_DATA_PREFIX}*${BACKUP_DATA_SUFFIX}" -type f -mtime +$DAYS_TO_KEEP_LOCAL -delete
26
27echo "Backup completed on $(date)"
28