#!/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."