john

john / GoToSocial Backup Script

Last active 5 months ago

Like 0

Quick script to back up a GoToSocial instance to Backblaze B2 with Rclone

john revised this gist 2 years ago · 4c9e9d9

1 file changed, 3 insertions, 1 deletion

backup-gotosocial.sh
@@ -1,4 +1,5 @@
1 1 #!/usr/bin/env -S bash -eu
2 + # cron script for backing up GTS to a Backblaze storage bucket
2 3
3 4 # Replace with your bucket
4 5 BB_BUCKET=my-backblaze-bucket
@@ -24,8 +25,9 @@ sqlite3 "$DB_PATH" ".backup \"$BACKUP_PATH/$BACKUP_DB_FILENAME\""
24 25 # Export application state
25 26 docker exec gotosocial /gotosocial/gotosocial admin export --path /gotosocial/storage/$BACKUP_EXPORT_FILENAME
26 27
27 - # Copy export file from container
28 + # Move export file from container
28 29 docker cp gotosocial:/gotosocial/storage/$BACKUP_EXPORT_FILENAME $BACKUP_PATH/$BACKUP_EXPORT_FILENAME
30 + docker exec gotosocial rm -f /gotosocial/storage/$BACKUP_EXPORT_FILENAME
29 31
30 32 # Upload to Backblaze
31 33 rclone copyto "$BACKUP_PATH/$BACKUP_DB_FILENAME" "$RCLONE_REMOTE/gotosocial_db.sqlite"

john revised this gist 2 years ago · 22c02f5

1 file changed, 37 insertions

backup-gotosocial.sh (file created)
@@ -0,0 +1,37 @@
1 + #!/usr/bin/env -S bash -eu
2 +
3 + # Replace with your bucket
4 + BB_BUCKET=my-backblaze-bucket
5 +
6 + # Set variables
7 + DB_PATH="/opt/docker/gotosocial/data/sqlite.db"
8 + RCLONE_REMOTE="backblaze:${BB_BUCKET}/gotosocial_backups"
9 + BACKUP_DB_PREFIX="gotosocial_db_"
10 + BACKUP_DB_SUFFIX=".sqlite"
11 + BACKUP_DB_FILENAME="$BACKUP_DB_PREFIX$(date +%Y%m%d_%H%M%S)$BACKUP_DB_SUFFIX"
12 + BACKUP_EXPORT_PREFIX="export_"
13 + BACKUP_EXPORT_SUFFIX=".json"
14 + BACKUP_EXPORT_FILENAME="$BACKUP_EXPORT_PREFIX$(date +%Y%m%d_%H%M%S)$BACKUP_EXPORT_SUFFIX"
15 + BACKUP_PATH="/opt/docker/gotosocial/backup/"
16 + DAYS_TO_KEEP_LOCAL=7
17 +
18 + # Ensure backup directory exists
19 + mkdir -p "$BACKUP_PATH"
20 +
21 + # Backup database
22 + sqlite3 "$DB_PATH" ".backup \"$BACKUP_PATH/$BACKUP_DB_FILENAME\""
23 +
24 + # Export application state
25 + docker exec gotosocial /gotosocial/gotosocial admin export --path /gotosocial/storage/$BACKUP_EXPORT_FILENAME
26 +
27 + # Copy export file from container
28 + docker cp gotosocial:/gotosocial/storage/$BACKUP_EXPORT_FILENAME $BACKUP_PATH/$BACKUP_EXPORT_FILENAME
29 +
30 + # Upload to Backblaze
31 + rclone copyto "$BACKUP_PATH/$BACKUP_DB_FILENAME" "$RCLONE_REMOTE/gotosocial_db.sqlite"
32 + rclone copyto "$BACKUP_PATH/$BACKUP_EXPORT_FILENAME" "$RCLONE_REMOTE/export.json"
33 +
34 + # Clean up old backups
35 + find "$BACKUP_PATH" -type f -mtime +$DAYS_TO_KEEP_LOCAL -delete
36 +
37 + echo "Backup completed on $(date)"