| @@ -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 / GoToSocial Backup Script
Last active 5 months ago
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
john revised this gist 2 years ago · 22c02f5
1 file changed, 37 insertions
| @@ -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)" | |