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.

john revised this gist 3 months ago · 861004f

1 file changed, 1 insertion, 1 deletion

backup.sh
@@ -11,7 +11,7 @@ BACKUP_PATH="/opt/my-app/backup/"
11 11 DAYS_TO_KEEP_LOCAL=7
12 12 DAYS_TO_KEEP_REMOTE=30
13 13
14 - BACKUP_DB_FILENAME="${BACKUP_DB_PREFIX}$_(date +%Y%m%d_%H%M%S)${BACKUP_DB_SUFFIX}"
14 + BACKUP_DB_FILENAME="${BACKUP_DB_PREFIX}_$(date +%Y%m%d_%H%M%S)${BACKUP_DB_SUFFIX}"
15 15 BACKUP_DATA_FILENAME="${BACKUP_DATA_PREFIX}_$(date +%Y%m%d_%H%M%S)${BACKUP_DATA_SUFFIX}"
16 16
17 17 mkdir -p "$BACKUP_PATH"

john revised this gist 3 months ago · 4670b58

1 file changed, 3 insertions, 2 deletions

backup.sh
@@ -4,15 +4,16 @@ DB_PATH="/opt/my-app/data/db.sqlite"
4 4 RCLONE_REMOTE="s3:my-bucket/my-app"
5 5 BACKUP_DB_PREFIX="my-app_db"
6 6 BACKUP_DB_SUFFIX=".sqlite"
7 - BACKUP_DB_FILENAME="${BACKUP_DB_PREFIX}$_(date +%Y%m%d_%H%M%S)${BACKUP_DB_SUFFIX}"
8 7 DATA_PATH="/opt/my-app/data"
9 8 BACKUP_DATA_PREFIX="my-app_data"
10 9 BACKUP_DATA_SUFFIX=".tar.gz"
11 - BACKUP_DATA_FILENAME="${BACKUP_DATA_PREFIX}_$(date +%Y%m%d_%H%M%S)${BACKUP_DATA_SUFFIX}"
12 10 BACKUP_PATH="/opt/my-app/backup/"
13 11 DAYS_TO_KEEP_LOCAL=7
14 12 DAYS_TO_KEEP_REMOTE=30
15 13
14 + BACKUP_DB_FILENAME="${BACKUP_DB_PREFIX}$_(date +%Y%m%d_%H%M%S)${BACKUP_DB_SUFFIX}"
15 + BACKUP_DATA_FILENAME="${BACKUP_DATA_PREFIX}_$(date +%Y%m%d_%H%M%S)${BACKUP_DATA_SUFFIX}"
16 +
16 17 mkdir -p "$BACKUP_PATH"
17 18
18 19 sqlite3 "$DB_PATH" ".backup \"$BACKUP_PATH/$BACKUP_DB_FILENAME\""

john revised this gist 3 months ago · 087259b

1 file changed, 13 insertions, 11 deletions

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

john revised this gist 2 years ago · 98c5f0b

1 file changed, 27 insertions

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