move scripts to own dir
This commit is contained in:
48
scripts/backup.sh
Executable file
48
scripts/backup.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "$SCRIPT_DIR/.env"
|
||||
DATA_ROOT="${DATA_ROOT:-/opt/docker-data}"
|
||||
|
||||
BACKUP_DIR="/opt/backups"
|
||||
DATE=$(date +%Y-%m-%d)
|
||||
KEEP_DAYS=7
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
|
||||
echo "==> Starting backup ($DATE)..."
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Nextcloud Postgres dump
|
||||
# ------------------------------------------------------------------
|
||||
echo " -> Dumping Nextcloud Postgres..."
|
||||
docker exec nextcloud-postgres pg_dumpall -U nextcloud > "$BACKUP_DIR/nextcloud-db-$DATE.sql"
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Nextcloud data
|
||||
# ------------------------------------------------------------------
|
||||
echo " -> Archiving Nextcloud data..."
|
||||
tar -czf "$BACKUP_DIR/nextcloud-data-$DATE.tar.gz" \
|
||||
-C "$DATA_ROOT" nextcloud/data nextcloud/html/config
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Gitea data
|
||||
# ------------------------------------------------------------------
|
||||
echo " -> Archiving Gitea data..."
|
||||
tar -czf "$BACKUP_DIR/gitea-$DATE.tar.gz" \
|
||||
-C "$DATA_ROOT" gitea/data gitea/config
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Rotate old backups
|
||||
# ------------------------------------------------------------------
|
||||
echo " -> Removing backups older than $KEEP_DAYS days..."
|
||||
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +$KEEP_DAYS -delete
|
||||
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +$KEEP_DAYS -delete
|
||||
|
||||
echo "==> Backup complete. Files in $BACKUP_DIR:"
|
||||
ls -lh "$BACKUP_DIR"/*"$DATE"* 2>/dev/null || echo " (no files found)"
|
||||
|
||||
echo ""
|
||||
echo "To schedule daily backups, add to crontab (crontab -e):"
|
||||
echo " 0 3 * * * $SCRIPT_DIR/backup.sh >> /var/log/backup.log 2>&1"
|
||||
Reference in New Issue
Block a user