backup.sh: update to use new paths
This commit is contained in:
parent
887f72ad07
commit
9b18682813
1 changed files with 28 additions and 85 deletions
109
backup.sh
109
backup.sh
|
|
@ -1,116 +1,59 @@
|
||||||
|
#!/bin/sh
|
||||||
# stops the script immediately if any error is encountered
|
# stops the script immediately if any error is encountered
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
PINK="\033[35m"
|
PINK="\033[35m"
|
||||||
RESET="\033[0m"
|
RESET="\033[0m"
|
||||||
|
|
||||||
backup_dir() {
|
|
||||||
# $1 = directory to (relative to backup folder)
|
|
||||||
# $2 = location of files
|
|
||||||
|
|
||||||
echo -e "$PINK $1: backing up directory $2$RESET"
|
|
||||||
OUT="$BACKUP_DIR"/"$1"
|
|
||||||
rsync -avP --no-perms --no-owner --no-group "$2/" "$OUT/"
|
|
||||||
}
|
|
||||||
|
|
||||||
systemd_stop_and_backup_dir() {
|
|
||||||
# $1 = service name
|
|
||||||
# $2 = directory to backup
|
|
||||||
|
|
||||||
echo -e "$PINK $1: stopping service$RESET"
|
|
||||||
systemctl stop "$1"
|
|
||||||
|
|
||||||
backup_dir "$1" "$2"
|
|
||||||
|
|
||||||
echo -e "$PINK $1: starting service$RESET"
|
|
||||||
systemctl start "$1"
|
|
||||||
|
|
||||||
echo -e "$PINK $1: DONE$RESET"
|
|
||||||
}
|
|
||||||
|
|
||||||
systemd_stop_and_backup_dir_arr() {
|
|
||||||
# excludes a couple not-needed large directories
|
|
||||||
# present in arr applications
|
|
||||||
# $1 = service name
|
|
||||||
# $2 = directory to backup
|
|
||||||
|
|
||||||
echo -e "$PINK $1: stopping service$RESET"
|
|
||||||
systemctl stop "$1"
|
|
||||||
|
|
||||||
echo -e "$PINK $1: backing up directory $2$RESET"
|
|
||||||
OUT="$BACKUP_DIR"/"$1"
|
|
||||||
mkdir --parents "$OUT"
|
|
||||||
rsync -avP --no-perms --no-owner --no-group --exclude Backups --exclude logs "$2/" "$OUT/"
|
|
||||||
|
|
||||||
echo -e "$PINK $1: starting service$RESET"
|
|
||||||
systemctl start "$1"
|
|
||||||
|
|
||||||
echo -e "$PINK $1: DONE$RESET"
|
|
||||||
}
|
|
||||||
|
|
||||||
kanidm_backup() {
|
kanidm_backup() {
|
||||||
echo -e "$PINK kanidm: backing up database to temp file$RESET"
|
# $1 = out path
|
||||||
DATABASE_DUMP_PATH=$(mktemp)
|
echo -e "$PINK kanidm: backing up database$RESET"
|
||||||
|
|
||||||
|
DATABASE_DUMP_PATH="$(mktemp)"
|
||||||
chown kanidm:kanidm "$DATABASE_DUMP_PATH"
|
chown kanidm:kanidm "$DATABASE_DUMP_PATH"
|
||||||
run0 -u kanidm --unit=kanidmd sh -c "kanidmd database backup \"$DATABASE_DUMP_PATH\""
|
run0 -u kanidm --unit=kanidmd sh -c "kanidmd database backup \"$DATABASE_DUMP_PATH\""
|
||||||
|
|
||||||
echo -e "$PINK kanidm: copying over to backup location$RESET"
|
rsync "$DATABASE_DUMP_PATH" "$1"
|
||||||
OUT="$BACKUP_DIR/kanidm"
|
|
||||||
rsync -avP --no-perms --no-owner --no-group "$DATABASE_DUMP_PATH" "$OUT"
|
|
||||||
rm "$DATABASE_DUMP_PATH"
|
rm "$DATABASE_DUMP_PATH"
|
||||||
|
|
||||||
echo -e "$PINK kanidm: DONE$RESET"
|
echo -e "$PINK kanidm: DONE$RESET"
|
||||||
}
|
}
|
||||||
|
|
||||||
postgres_backup() {
|
postgres_backup() {
|
||||||
echo -e "$PINK postgres($1): backing up database $1 to temp file$RESET"
|
# $1 = database to backup
|
||||||
DATABASE_DUMP_PATH=$(mktemp)
|
# $2 = location to put backup
|
||||||
chown postgres:postgres "$DATABASE_DUMP_PATH"
|
echo -e "$PINK postgres($1): backing up database $1 to stdout$RESET"
|
||||||
run0 -u postgres pg_dump --dbname="$1" --file="$DATABASE_DUMP_PATH"
|
run0 -u postgres pg_dump --dbname="$1" > "$2"
|
||||||
|
|
||||||
echo -e "$PINK postgres($1): copying over to backup location$RESET"
|
|
||||||
OUT="$BACKUP_DIR/$1"
|
|
||||||
rsync -avP --no-perms --no-owner --no-group "$DATABASE_DUMP_PATH" "$OUT"
|
|
||||||
rm "$DATABASE_DUMP_PATH"
|
|
||||||
|
|
||||||
echo -e "$PINK postgres($1): DONE$RESET"
|
echo -e "$PINK postgres($1): DONE$RESET"
|
||||||
}
|
}
|
||||||
|
|
||||||
forgejo_backup() {
|
|
||||||
echo -e "$PINK forgejo: backing up$RESET"
|
|
||||||
OUT="$BACKUP_DIR"/"forgejo"
|
|
||||||
|
|
||||||
# gets binary name from the systemd service, this works
|
|
||||||
# with multiple derivations in the nix store and grabs
|
|
||||||
# the binary of the latest package.
|
|
||||||
FORGEJO_PATH=$(cat /etc/systemd/system/forgejo.service | grep ExecStart= | sed 's/ExecStart=//' | awk '{print $1;}')
|
|
||||||
run0 -u forgejo "$FORGEJO_PATH" dump --config /media/git/custom/conf/app.ini -f - > "$OUT"
|
|
||||||
|
|
||||||
echo -e "$PINK forgejo: DONE$RESET"
|
|
||||||
}
|
|
||||||
|
|
||||||
if [ "$1" = "" ]; then
|
if [ "$1" = "" ]; then
|
||||||
echo "$0: [BACKUP_DIR]"
|
echo "$0: [BACKUP_DIR]"
|
||||||
exit 1
|
exit 1
|
||||||
|
elif [ "$USER" != "root" ]; then
|
||||||
|
echo "$0: rerun the script as root"
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
/*) echo " ";;
|
||||||
|
*) echo "$0: use absolute path for backup dir"; exit 1;;
|
||||||
|
esac
|
||||||
|
|
||||||
BACKUP_DIR="$1"
|
BACKUP_DIR="$1"
|
||||||
echo -e "$PINK using folder $BACKUP_DIR$RESET"
|
echo -e "$PINK using folder $BACKUP_DIR$RESET"
|
||||||
mkdir --parents "$BACKUP_DIR"
|
mkdir --parents "$BACKUP_DIR"
|
||||||
|
|
||||||
systemd_stop_and_backup_dir_arr radarr /var/lib/radarr
|
SERVICES="jellyfin radarr sonarr prowlarr uptime-kuma deluged forgejo karakeep-web karakeep-workers karakeep-browser"
|
||||||
systemd_stop_and_backup_dir_arr sonarr /var/lib/sonarr
|
|
||||||
systemd_stop_and_backup_dir_arr prowlarr /var/lib/prowlarr
|
|
||||||
systemd_stop_and_backup_dir uptime-kuma /var/lib/uptime-kuma
|
|
||||||
backup_dir deluge /media/torrents/files
|
|
||||||
|
|
||||||
# karakeep has multiple services so stop all of them
|
systemctl stop $SERVICES
|
||||||
systemctl stop karakeep-web karakeep-browser karakeep-workers
|
|
||||||
systemd_stop_and_backup_dir karakeep-web /var/lib/karakeep
|
|
||||||
systemctl start karakeep-web karakeep-browser karakeep-workers
|
|
||||||
|
|
||||||
kanidm_backup
|
rsync -avP /media/ --exclude "media" --exclude "secrets" --exclude "torrents" --include "torrents/files/*" "$BACKUP_DIR"
|
||||||
forgejo_backup
|
|
||||||
postgres_backup miniflux
|
kanidm_backup "$BACKUP_DIR"/apps/kanidm.bak
|
||||||
|
postgres_backup miniflux "$BACKUP_DIR"/apps/miniflux.sql
|
||||||
|
|
||||||
|
systemctl start $SERVICES
|
||||||
|
|
||||||
echo -e "\n\nBACKUP COMPLETED!"
|
echo -e "\n\nBACKUP COMPLETED!"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue