Просмотр исходного кода

Adding vaultwarden backup script

root 1 неделя назад
Родитель
Сommit
8821517ebe
2 измененных файлов с 50 добавлено и 0 удалено
  1. 18 0
      vaultwardenBackup/Readme.md
  2. 32 0
      vaultwardenBackup/backup_vaultwarden.sh

+ 18 - 0
vaultwardenBackup/Readme.md

@@ -0,0 +1,18 @@
+# Backing up Postgresql databases running in Docker container
+## Configuration
+Please create a configuration file which defines the following variables. 
+```
+#Where to put the dumps
+backupFilepath="/var/vaultwarden/backup/"
+#How many dumps shall be kept
+rotationDays=7
+#Database settings
+dockerContainerName=docker_vaultwarden 
+#Location of the vaultwarden data folder
+dataFilePath="/var/data/vaultwarden/"
+```
+
+Pass this configuration file as parameter to the script. To automate the backup job, I recommend to put the script in your crontab: 
+``` 
+50 2 * * * root /root/scripts/backup/vaultwardenBackup/backup_vaultwarden /root/scripts/backup/vaultwardenBackup/vaultwardenBackup.conf
+```

+ 32 - 0
vaultwardenBackup/backup_vaultwarden.sh

@@ -0,0 +1,32 @@
+#!/bin/bash
+
+if [ "$#" -ne 1 ]; then
+    echo "Error: Please provide the path to the config file." >&2
+    echo "Usage: $0 <config file path>" >&2
+    exit 1
+fi
+
+#Source external configuration
+. $1
+
+#Check if all variables are provided
+for var in backupFilepath dockerContainerName dataFilepath; do
+    if [ -z "${!var}" ]; then
+        echo "Error: Required config variable '$var' is not set or empty." >&2
+        exit 1
+    fi
+done
+
+#Create backup directories if not present
+mkdir -p ${backupFilepath}/database
+
+#mkdir -p ${backupFilepath}/attachments
+
+#Backup database
+docker exec -i ${dockerContainerName} /vaultwarden backup > /dev/null 2>&1
+
+#Copy file(s) over to destination
+mv ${dataFilepath}/db_*.sqlite3 ${backupFilepath}/database/
+
+#Backup rotation - Delete everything older than rotationDays
+find $backupFilepath -type f -mtime +$rotationDays -name '*.sqlite3' -execdir rm -- '{}' \;