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

Revision 22c02f5c38ecbb61fe32503d9b20f1e1c251f23c

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