Skip to content

Instantly share code, notes, and snippets.

@andrelop
Last active May 1, 2024 21:42
Show Gist options
  • Save andrelop/941be7f182c11a4a3204f6a9031258a2 to your computer and use it in GitHub Desktop.
Save andrelop/941be7f182c11a4a3204f6a9031258a2 to your computer and use it in GitHub Desktop.
Example backup script for Mastodon, WriteFreely and Miniflux
#!/bin/bash
TODAY=$(date +%Y%m%d)
YESTERDAY=$(date --date '1 day ago' +%Y%m%d)
# Backup Mastodon database
MASTODON_DB_CONTAINER=$(docker ps | grep mastodon_postgresql | awk '{print $1}')
docker exec -it ${MASTODON_DB_CONTAINER} bash -c 'rm -rf /var/lib/postgresql/data/'${YESTERDAY}' || true ; mkdir /var/lib/postgresql/data/'${TODAY}' || true'
docker exec -it ${MASTODON_DB_CONTAINER} bash -c 'pg_dumpall -c -U mastodon > /var/lib/postgresql/data/'${TODAY}'/mastodon-dump.sql'
# Backup miniflux database
MINIFLUX_DB_CONTAINER=$(docker ps | grep miniflux_database | awk '{print $1}')
docker exec -it ${MINIFLUX_DB_CONTAINER} bash -c 'rm -rf /var/lib/postgresql/data/'${YESTERDAY}' || true ; mkdir /var/lib/postgresql/data/'${TODAY}' || true'
docker exec -it ${MINIFLUX_DB_CONTAINER} bash -c 'pg_dumpall -c -U miniflux > /var/lib/postgresql/data/'${TODAY}'/miniflux-dump.sql'
# Backup writefreely database
MARIADB_ROOT_PASSWORD=$(grep MARIADB_ROOT_PASSWORD /opt/writefreely/docker/docker-compose.yml | awk -F'=' '{print $2}')
WRITEFREELY_DB_CONTAINER=$(docker ps | grep writefreely-db | awk '{print $1}')
docker exec -it ${WRITEFREELY_DB_CONTAINER} bash -c 'rm -rf /var/lib/mysql/'${YESTERDAY}' || true ; mkdir /var/lib/mysql/'${TODAY}' || true'
docker exec -it ${WRITEFREELY_DB_CONTAINER} bash -c 'mariadb-dump --user=root --password='${MARIADB_ROOT_PASSWORD}' --all-databases > /var/lib/mysql/'${TODAY}'/writefreely-dump.sql'
# Backup everything else to rsync.net
rsync -az /opt user@user.rsync.net:backup/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment