Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 網站資料自動備份與舊備份清理:Shell 腳本 + cron 定時任務實戰

編輯:關於 Linux

網站資料 (程式碼 + 資料庫) 定期備份是營運基礎。本文提供一個生產可用的 Shell 腳本,實現每日全量備份網站目錄與 MySQL/MariaDB 資料庫,並自動清理超過保留天數的舊備份,最後配置 cron 定時執行。

備份腳本 /root/backup_web.sh

#!/bin/bash
# ========== 設定區 ==========
WEB_ROOT="/var/www/html"
DB_NAME="mydb"
DB_USER="root"
DB_PASS="StrongPassword"   # 建議改用 .my.cnf 或密鑰管理
BACKUP_DIR="/backup/web"
RETENTION_DAYS=14
DATE=$(date +%F)
# =============================

set -euo pipefail
mkdir -p "$BACKUP_DIR"

# 1. 清理舊備份
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -name "web_*.tar.gz" -delete
find "$BACKUP_DIR" -type f -mtime +$RETENTION_DAYS -name "db_*.sql.gz" -delete

# 2. 備份網站檔案
tar -czf "$BACKUP_DIR/web_${DATE}.tar.gz" -C "$(dirname "$WEB_ROOT")" "$(basename "$WEB_ROOT")"

# 3. 備份資料庫 (單一資料庫)
mysqldump -u"$DB_USER" -p"$DB_PASS" --single-transaction --routines --triggers "$DB_NAME" | \
    gzip > "$BACKUP_DIR/db_${DATE}.sql.gz"

# 4. 驗證備份完整性
if [[ -s "$BACKUP_DIR/web_${DATE}.tar.gz" && -s "$BACKUP_DIR/db_${DATE}.sql.gz" ]]; then
    echo "[$(date)] 備份成功: web_${DATE}.tar.gz, db_${DATE}.sql.gz"
else
    echo "[$(date)] 備份失敗!檔案為空" >&2
    exit 1
fi

權限與安全

chmod 700 /root/backup_web.sh
chown root:root /root/backup_web.sh
# 建議將 DB 密碼存入 ~/.my.cnf (chmod 600) 而非腳本明文

配置 cron 定時任務

# 每天凌晨 02:30 執行 (避開流量尖峰)
30 2 * * * root /root/backup_web.sh >> /var/log/backup_web.log 2>&1

寫入 /etc/cron.d/backup_web (需 root) 或 crontab -e (root 使用者)。

進階增強

  • 遠端同步:備份完成後 rsync -avz /backup/web/ user@offsite:/backup/web/。
  • 加密:gpg --symmetric --cipher-algo AES256 backup.tar.gz。
  • 通知:失敗時發送郵件/Telegram/Slack Webhook。
  • 增量備份:改用 rsnapshot、restic、borgbackup 節省空間。

驗證與還原測試

# 列出備份
ls -lh /backup/web/

# 還原網站
tar -xzf /backup/web/web_2024-01-15.tar.gz -C /var/www/html --strip-components=1

# 還原資料庫
gunzip -c /backup/web/db_2024-01-15.sql.gz | mysql -u root -p mydb

定期演練還原流程,才能確保備份真正可用。

Copyright © Windows教程網 All Rights Reserved