From 23bd1e4c209485713405339d0b6e101e73d92986 Mon Sep 17 00:00:00 2001 From: "sem (live debian USB on ymir)" Date: Sun, 9 Aug 2026 14:47:19 +0000 Subject: [PATCH] Add services backup scripts --- services/backup-docspell.sh | 21 +++++++++++++++++++++ services/backup-immich.sh | 24 ++++++++++++++++++++++++ services/backup-music.sh | 18 ++++++++++++++++++ services/backup-trilium.sh | 11 +++++++++++ services/backup-webserver.sh | 25 +++++++++++++++++++++++++ 5 files changed, 99 insertions(+) create mode 100755 services/backup-docspell.sh create mode 100755 services/backup-immich.sh create mode 100755 services/backup-music.sh create mode 100755 services/backup-trilium.sh create mode 100755 services/backup-webserver.sh diff --git a/services/backup-docspell.sh b/services/backup-docspell.sh new file mode 100755 index 0000000..498cede --- /dev/null +++ b/services/backup-docspell.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +echo "running backup docspell script at $(date)" + +backup-scripts/start-backup.sh + +echo "backing up docspell!" +echo "------------------" +cd /srv/docspell/docker/docker-compose/ +echo "cd to $(pwd)" +echo "executing postgres pg_dump command" +docker exec -it postgres_db pg_dump -d dbname -U dbuser -Fc -f /opt/backup/docspell.sqlc + +# then backup to backups vm +echo "sending sql backup to VM" +rsync --stats --progress -arv --ignore-times /backups/docspell-backup/* sem@10.10.100.52:/home/sem/docspell-backup/ +echo "sending docspell dir to VM" +rsync --stats --progress -arv --ignore-times /srv/docspell/* sem@10.10.100.52:/home/sem/docspell-backup/ + +# run script using absolute path because docker backup command cd's to /srv/docspell +/backups/backup-scripts/stop-backup.sh diff --git a/services/backup-immich.sh b/services/backup-immich.sh new file mode 100755 index 0000000..e203cb0 --- /dev/null +++ b/services/backup-immich.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +echo "running backup immich script at $(date)" + +backup-scripts/start-backup.sh + +echo "backing up immich!" +echo "------------------" +echo "backing up photos!" +# use the --update flag to update the remote only if a newer version is on the local filesystem" +rsync --stats --progress -arv --update /mass/photos/* sem@10.10.100.52:/home/sem/immich/immich_photos_backup/ + +echo "------------------" +echo "backing up config" +echo "executing backup command" +docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=postgres | gzip > "/backups/immich_backup_dump.sgl.gz" +echo "sending config backup to VM" +rsync --stats --progress -arv /backups/immich_backup_dump.sgl.gz sem@10.10.100.52:/home/sem/immich/immich_backup_dump.sgl.gz + +echo "------------------" +echo "backing up immich-app folder" +rsync --stats --progress -arv /home/sem/immich-app sem@10.10.100.52:/home/sem/immich/immich-app + +backup-scripts/stop-backup.sh diff --git a/services/backup-music.sh b/services/backup-music.sh new file mode 100755 index 0000000..bdb640d --- /dev/null +++ b/services/backup-music.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo "running backup music script at $(date)" + +backup-scripts/start-backup.sh + +echo "backing up music!" +# backup music to backups vm +rsync --stats --progress -arv --ignore-existing /home/sem/Music/* sem@10.10.100.52:/home/sem/music-backup/songs + +echo "backing up db!" +rsync --stats --progress -arv /var/lib/navidrome/* --exclude /var/lib/navidrome/cache sem@10.10.100.52:/home/sem/music-backup/navidrome +echo "backing up config!" +rsync --stats --progress -arv /etc/navidrome/* sem@10.10.100.52:/home/sem/music-backup/navidrome + +backup-scripts/stop-backup.sh + + diff --git a/services/backup-trilium.sh b/services/backup-trilium.sh new file mode 100755 index 0000000..f1d0b55 --- /dev/null +++ b/services/backup-trilium.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +echo "running backup trilium script at $(date)" + +backup-scripts/start-backup.sh + +echo "backing up trilium!" +echo "------------------" +rsync --stats --progress -arv --ignore-times /home/sem/trilium-data sem@10.10.100.52:/home/sem/ + +backup-scripts/stop-backup.sh diff --git a/services/backup-webserver.sh b/services/backup-webserver.sh new file mode 100755 index 0000000..84a8bf1 --- /dev/null +++ b/services/backup-webserver.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +echo "running backup webserver script at $(date)" + +backup-scripts/start-backup.sh + +echo "[since 27-03-2026] Not backing up webserver because it's tracked in gitea" +# echo "backing up webserver!" +# echo "------------------" +# rsync -arv /home/sem/webserver sem@10.10.100.52:/home/sem/webserver-backups/ + +echo "------------------" +echo "Backing up mysql database!" +echo "Creating database dump" +mysqldump -u root -p'Mmiiigod1j!mysql' --all-databases > /backups/all_databases.sql +echo "Sending database backup" +rsync --stats --progress -arv --ignore-times /backups/all_databases.sql sem@10.10.100.52:/home/sem/webserver-backups/ + +echo "------------------" +echo "Backing up library!" +rsync --stats --progress -arv /srv/library sem@10.10.100.52:/home/sem/webserver-backups/ + +backup-scripts/stop-backup.sh + +