53 lines
1.5 KiB
Bash
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."
|