37 lines
854 B
Bash
Executable File
37 lines
854 B
Bash
Executable File
#!/bin/bash
|
|
|
|
# Note: use rclone for backup, needs manually configuration.
|
|
|
|
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
|
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=$XDG_RUNTIME_DIR/bus"
|
|
|
|
DATA=""
|
|
DB=""
|
|
LOCAL_BACKUP="$HOME/.local/backup"
|
|
REMOTE=""
|
|
DB_USERNAME=""
|
|
DB_PASSWORD=""
|
|
DB_DATABASE=""
|
|
CONTAINER_DB=""
|
|
SERVICE=""
|
|
|
|
STAGING_DIR=$(mktemp -d)
|
|
mkdir -p $LOCAL_BACKUP
|
|
DATE=$(date +%F-%H-%M-%S)
|
|
BACKUP_NAME="backup_$DATE.tar.gz"
|
|
|
|
systemctl --user stop $SERVICE
|
|
podman exec $CONTAINER_DB pg_dump -U $DB_USERNAME -F c -d $DB_DATABASE > $STAGING_DIR/db.dump
|
|
|
|
cp -r "$DATA" "$STAGING_DIR/data"
|
|
cp -r "$DB" "$STAGING_DIR/db"
|
|
tar -czf "$LOCAL_BACKUP/$BACKUP_NAME" -C "$STAGING_DIR" .
|
|
|
|
ls -1t "$LOCAL_BACKUP"/backup_*.tar.gz | tail -n +6 | xargs -r rm --
|
|
|
|
|
|
/usr/bin/rclone sync $LOCAL_BACKUP $REMOTE > /dev/null
|
|
|
|
rm -rf $STAGING_DIR
|
|
|
|
systemctl --user start $SERVICE |