VPS 自動備份設定教學:排程備份與資料異地儲存

VPS備份cronrclone自動化教學排程資料安全雲端備份異地備援

定期備份是保護資料最重要的措施。本文說明如何撰寫備份腳本、設定排程自動執行,以及使用 rclone 將備份同步至遠端儲存空間。

建立備份腳本

  1. 建立備份目錄與腳本:
    mkdir -p /opt/backups
    nano /opt/backups/backup.sh
  2. 寫入以下內容:
    #!/bin/bash
    # ============================================
    # 自動備份腳本 — 網站檔案 + MySQL 資料庫
    # ============================================
    
    # 設定
    BACKUP_DIR="/opt/backups"
    DATE=$(date +%Y%m%d_%H%M%S)
    KEEP_DAYS=7
    
    # MySQL 設定(建議改用 ~/.my.cnf 儲存帳密)
    DB_NAME="your_database"
    DB_USER="your_db_user"
    DB_PASS="your_db_password"
    
    # 備份網站檔案
    echo "[$(date)] 開始備份網站檔案..."
    tar -czf ${BACKUP_DIR}/web_${DATE}.tar.gz /var/www/ 2>/dev/null
    
    # 備份資料庫
    echo "[$(date)] 開始備份資料庫..."
    mysqldump -u${DB_USER} -p${DB_PASS} ${DB_NAME} | \
      gzip > ${BACKUP_DIR}/db_${DATE}.sql.gz
    
    # 刪除超過保留天數的舊備份
    echo "[$(date)] 清理 ${KEEP_DAYS} 天前的舊備份..."
    find ${BACKUP_DIR} -name "web_*.tar.gz" -mtime +${KEEP_DAYS} -delete
    find ${BACKUP_DIR} -name "db_*.sql.gz" -mtime +${KEEP_DAYS} -delete
    
    echo "[$(date)] 備份完成!"
    ls -lh ${BACKUP_DIR}/
  3. 設定腳本執行權限:
    chmod +x /opt/backups/backup.sh
  4. 手動測試執行:
    /opt/backups/backup.sh

設定 Cron 排程

使用 crontab 設定每天凌晨 3 點自動執行備份:

  1. 編輯 crontab:
    crontab -e
  2. 在最後加入以下行:
    0 3 * * * /opt/backups/backup.sh >> /opt/backups/backup.log 2>&1
  3. 確認排程已設定:
    crontab -l

Cron 時間格式說明:分 時 日 月 星期0 3 * * * 代表每天凌晨 3:00。

使用 rclone 同步至遠端

僅在本機備份不夠安全,建議使用 rclone 將備份同步至遠端儲存(如 S3、Google Drive、Backblaze B2 等)。

  1. 安裝 rclone:
    curl https://rclone.org/install.sh | bash
  2. 設定遠端儲存空間:
    rclone config

    依照互動式引導選擇儲存服務(例如 S3、Google Drive),並完成授權。

  3. 測試同步:
    # 將備份目錄同步至遠端(remote-name 為您在 rclone config 中設定的名稱)
    rclone sync /opt/backups remote-name:backup-bucket/vps-backups
  4. 加入備份腳本中,在備份完成後自動同步:
    # 在 backup.sh 最後加入
    echo "[$(date)] 開始同步至遠端..."
    rclone sync ${BACKUP_DIR} remote-name:backup-bucket/vps-backups \
      --transfers 4 --checkers 8
    echo "[$(date)] 遠端同步完成!"

驗證備份可還原

備份只有在能成功還原時才有價值。建議定期測試還原流程:

  1. 還原網站檔案(至測試目錄):
    mkdir -p /tmp/restore-test
    tar -xzf /opt/backups/web_最新日期.tar.gz -C /tmp/restore-test/
  2. 還原資料庫(至測試資料庫):
    mysql -u root -p -e "CREATE DATABASE restore_test;"
    gunzip < /opt/backups/db_最新日期.sql.gz | mysql -u root -p restore_test
  3. 確認資料完整後,清除測試資料:
    rm -rf /tmp/restore-test
    mysql -u root -p -e "DROP DATABASE restore_test;"

重要提醒:至少每季測試一次還原流程,確保備份確實可用。

需要主機來實作?

侃瑞科技提供 cPanel 虛擬主機與 VPS,教學裡的操作開箱即用。

查看方案 →
LINE 諮詢