First
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env bash
|
||||
# = /usr/local/bin/vw-backup.sh (права 700). Запуск по systemd-таймеру vw-backup.timer (03:30 MSK).
|
||||
set -euo pipefail
|
||||
|
||||
VOL="/var/lib/docker/volumes/core_vaultwarden_data/_data"
|
||||
DEST="/opt/backups/vaultwarden"
|
||||
KEEP=14
|
||||
TS="$(date +%Y%m%d-%H%M%S)"
|
||||
WORK="$(mktemp -d)"
|
||||
trap 'rm -rf "$WORK"' EXIT
|
||||
|
||||
mkdir -p "$DEST"
|
||||
|
||||
sqlite3 "$VOL/db.sqlite3" ".timeout 10000" ".backup '$WORK/db.sqlite3'"
|
||||
|
||||
cp -a "$VOL"/rsa_key* "$WORK"/ 2>/dev/null || true
|
||||
cp -a "$VOL"/config.json "$WORK"/ 2>/dev/null || true
|
||||
cp -a "$VOL"/attachments "$WORK"/ 2>/dev/null || true
|
||||
cp -a "$VOL"/sends "$WORK"/ 2>/dev/null || true
|
||||
|
||||
ARCHIVE="$DEST/vaultwarden-$TS.tar.gz"
|
||||
tar -czf "$ARCHIVE" -C "$WORK" .
|
||||
|
||||
ls -1t "$DEST"/vaultwarden-*.tar.gz | tail -n +$((KEEP+1)) | xargs -r rm -f
|
||||
|
||||
# офсайт 1: Google Drive (обязательный)
|
||||
rclone copy "$ARCHIVE" gdrive:vaultwarden-backups/
|
||||
rclone delete --min-age 90d gdrive:vaultwarden-backups/ 2>/dev/null || true
|
||||
|
||||
# офсайт 2: домашний SMB через WG (best-effort)
|
||||
if rclone copy "$ARCHIVE" "homesmb:TOSHIBA EXT/vaultwarden-backups/" 2>/dev/null; then
|
||||
rclone delete --min-age 90d "homesmb:TOSHIBA EXT/vaultwarden-backups/" 2>/dev/null || true
|
||||
SMB="ok"
|
||||
else
|
||||
SMB="недоступен"
|
||||
fi
|
||||
|
||||
echo "OK: $ARCHIVE ($(du -h "$ARCHIVE" | cut -f1)) -> локально + gdrive + smb:$SMB"
|
||||
Reference in New Issue
Block a user