Files

35 lines
1.2 KiB
Bash

#!/usr/bin/env bash
# Nightly backup: mysqldump (gz) + code tarball (upload excluded).
# Retention: KEEP_DAYS. Restore notes in README.
set -euo pipefail
KEEP_DAYS=14
DB_NAME="${DB_NAME:-sitemanager}"
BACKUP_DIR="${BACKUP_DIR:-/var/backups/bitrix}"
SITE_DIR="${SITE_DIR:-/home/bitrix/www}"
TS="$(date +%F_%H%M)"
mkdir -p "$BACKUP_DIR/db" "$BACKUP_DIR/code"
echo "[$(date -Is)] dumping database $DB_NAME"
mysqldump --single-transaction --quick --routines --triggers --events \
--databases "$DB_NAME" \
| gzip -6 > "$BACKUP_DIR/db/${TS}_${DB_NAME}.sql.gz"
echo "[$(date -Is)] archiving code tree (without upload/caches)"
tar czf "$BACKUP_DIR/code/${TS}_site.tar.gz" \
-C "$(dirname "$SITE_DIR")" \
--exclude='www/upload' \
--exclude='www/bitrix/cache' \
--exclude='www/bitrix/managed_cache' \
--exclude='www/bitrix/stack_cache' \
--exclude='www/bitrix/tmp' \
--exclude='www/local/php_interface/include/.backup*' \
"$(basename "$SITE_DIR")"
echo "[$(date -Is)] pruning older than $KEEP_DAYS days"
find "$BACKUP_DIR/db" -name '*.sql.gz' -mtime +"$KEEP_DAYS" -delete
find "$BACKUP_DIR/code" -name '*.tar.gz' -mtime +$((KEEP_DAYS * 3)) -delete
echo "[$(date -Is)] done: $(du -sh "$BACKUP_DIR" | cut -f1) total"