Last active
May 1, 2024 21:42
-
-
Save andrelop/941be7f182c11a4a3204f6a9031258a2 to your computer and use it in GitHub Desktop.
Example backup script for Mastodon, WriteFreely and Miniflux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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 [email protected]:backup/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment