Skip to content

Commit 8f08e45

Browse files
committed
feat: improve vaultwarden backup/restore functionality
1 parent aa5b845 commit 8f08e45

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

profiles/vaultwarden.nix

+25-6
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,12 @@
1919
echo "Vaultwarden backup directory $DIR already exists, skipping backup"
2020
exit 0
2121
fi
22+
if [ ! -e "${DATA_FOLDER}/db.sqlite3" ]; then
23+
echo "Vaultwarden database does not exist, skipping backup"
24+
exit 0
25+
fi
2226
filesize=$(stat -c%s "${DATA_FOLDER}/db.sqlite3")
23-
if (( filesize < 50000 )); then
27+
if (( filesize < 300000 )); then
2428
echo 'Vaultwarden database is to small - new db?, skipping backup'
2529
exit 0
2630
fi
@@ -44,12 +48,27 @@
4448
restore-vw-backup = pkgs.writeText "restore-vw-backup.sh" ''
4549
BACKUP="$(ls "${cfg.backupDir}"/ | tail -n1)"
4650
echo possibly restoring from latest backup "$BACKUP"
47-
if [ ! -e "${DATA_FOLDER}/db.sqlite3" ] && [ ! -z "$BACKUP" ]; then
48-
cp -R ${cfg.backupDir}/"$BACKUP"/* ${DATA_FOLDER}/
49-
chown -R ${user}:${group} ${DATA_FOLDER}
50-
else
51-
echo skipping restore
51+
if [ -z "$BACKUP" ]; then
52+
echo "No vaultwarden backup exists, skipping restore"
53+
exit 0
54+
fi
55+
if [ ! -e "$BACKUP/rsa_key.pem" ]; then
56+
echo "No vaultwarden rsa_key.pem backup exists, skipping restore"
57+
exit 0
58+
fi
59+
if [ ! -e "$BACKUP/db.sqlite3" ]; then
60+
echo "No vaultwarden database backup exists, skipping restore"
61+
exit 0
62+
fi
63+
filesize=$(stat -c%s "${DATA_FOLDER}/db.sqlite3")
64+
if (( filesize > 300000 )); then
65+
echo 'Vaultwarden database exists and is over 300k in size, skipping restore'
66+
exit 0
5267
fi
68+
echo "Restoring vaultwarden backup"
69+
rm -rf "${DATA_FOLDER}/*"
70+
cp -R ${cfg.backupDir}/"$BACKUP"/* ${DATA_FOLDER}/
71+
chown -R ${user}:${group} ${DATA_FOLDER}
5372
'';
5473
in {
5574
environment.persistence."/keep".directories = [DATA_FOLDER];

0 commit comments

Comments
 (0)