And for next time. https://gist.github.com/AtulKsol/520f5d0c9a313edea7254701f6d...
So looking to pg-dump to a different server in a cheaper datacenter. Think I have something bookmarked talking about running rsync or something. Will be going into those options this week.
#!/bin/bash
set -e
BACKUPDIR=/srv/backup/$(/usr/bin/date -I)
umask 137
cd /tmp
backup_init() {
echo 'Initializing backup...'
mkdir "$BACKUPDIR"
chown root:root "$BACKUPDIR"
chmod 751 "$BACKUPDIR"
}
backup_postgres() {
# Postgres
echo 'Backing up PostgreSQL...'
sudo -u postgres /usr/bin/pg_dumpall > $BACKUPDIR/postgres.sql
}
backup_podman_volumes_for_user() {
if id "$1" &> /dev/null; then
echo "Podman user $1 found. Creating backups of volumes..."
mkdir "$BACKUPDIR/$1"
chmod 751 "$BACKUPDIR/$1"
for volume in $(sudo -u $1 /usr/bin/podman volume ls --format {{.Name}}); do
echo "Backing up volume $volume for user $1"
touch "$BACKUPDIR/$1/$volume.tar"
chown $1:$1 "$BACKUPDIR/$1/$volume.tar"
chmod 660 "$BACKUPDIR/$1/$volume.tar"
sudo -u $1 /usr/bin/podman volume export "$volume" --output "$BACKUPDIR/$1/$volume.tar"
chown root:root "$BACKUPDIR/$1/$volume.tar"
chmod 640 "$BACKUPDIR/$1/$volume.tar"
done
else
echo "User $1 not found. Skipping."
fi
}
backup_bitwarden() {
backup_podman_volumes_for_user bitwarden
cp /home/bitwarden/vaultwarden.conf $BACKUPDIR/bitwarden/
}
backup_etc() {
echo 'Backing up /etc...'
rsync -a /etc/ $BACKUPDIR/etc
}
backup_jellyfin_metadata() {
echo 'Backing up Jellyfin metadata...'
mkdir $BACKUPDIR/jellyfin
rsync -a /var/lib/jellyfin/ $BACKUPDIR/jellyfin
}
backup_postprocess() {
cd /srv/backup
echo 'Compressing...'
tar -czv --atime-preserve='system' -f $BACKUPDIR.tgz $BACKUPDIR
echo 'Removing...'
rm -rf $BACKUPDIR
}
backup_init
backup_etc
backup_postgres
backup_bitwarden
backup_jellyfin_metadata
backup_postprocess