Files
scripts_serv/paperless_backup.sh
2026-10-02 22:35:11 +02:00

53 lines
1.5 KiB
Bash

#!/bin/bash
# --- Configuration ---
BACKUP_DIR="$HOME/paperless-backups"
PAPERLESS_DATA_DIR="/mnt/flash1/podman/lxc_servarr/browser/data"
DATEStamp=$(date +%F-%H%M)
DB_BACKUP="$BACKUP_DIR/paperless-db-backup-$DATEStamp.sql.gz"
FILES_BACKUP="$BACKUP_DIR/paperless-files-backup-$DATEStamp.tar.gz"
# --- Prepare ---
mkdir -p "$BACKUP_DIR"
# --- Step 1: Backup Database ---
echo "[$(date)] Starting database backup..."
sudo podman exec paperless-db pg_dump -U paperless paperless | gzip >"$DB_BACKUP"
if [ -s "$DB_BACKUP" ]; then
echo "[$(date)] ✅ Database backup created: $DB_BACKUP"
else
echo "[$(date)] ❌ Database backup failed"
rm -f "$DB_BACKUP"
exit 1
fi
# --- Step 2: Backup Disk Folders ---
echo "[$(date)] Starting files backup..."
tar czf "$FILES_BACKUP" \
"$PAPERLESS_DATA_DIR/paperless/media" \
"$PAPERLESS_DATA_DIR/paperless/data" \
"$PAPERLESS_DATA_DIR/paperless/export" \
"$PAPERLESS_DATA_DIR/.consume" \
2>/dev/null
if [ -s "$FILES_BACKUP" ]; then
echo "[$(date)] ✅ Files backup created: $FILES_BACKUP"
else
echo "[$(date)] ❌ Files backup failed"
rm -f "$FILES_BACKUP"
exit 1
fi
# --- Step 3: Verify ---
echo ""
echo "=== Backup Summary ==="
ls -lh "$DB_BACKUP" "$FILES_BACKUP"
# --- Step 4: Cleanup old backups (keep 14 days) ---
find "$BACKUP_DIR" -name "paperless-db-backup-*.sql.gz" -mtime +14 -delete
find "$BACKUP_DIR" -name "paperless-files-backup-*.tar.gz" -mtime +14 -delete
echo "[$(date)] ✅ Backup complete. Old backups older than 14 days removed."