💾 Linux rsync 備份同步實戰:自動化遠端與本機備份
在企業與個人伺服器環境中,資料備份 是確保營運不中斷的關鍵。rsync 是 Linux 上最靈活、穩定且高效的檔案同步工具之一,可用於 本機備份、遠端同步、增量複製 與 自動化排程。本文將完整示範從基礎語法到自動化排程的實戰應用。
📑 一、rsync 的核心概念
- 差異同步(Delta Transfer):僅傳輸變更部分,節省頻寬。
- 支援 SSH:安全傳輸資料,無須額外開放 FTP。
- 可排程化:搭配
cron或systemd timer自動執行。
# 安裝 rsync
sudo apt install rsync -y # Debian / Ubuntu
sudo yum install rsync -y # CentOS / RHEL
# 基本語法
rsync -avh /source/ /backup/
# 遠端同步(透過 SSH)
rsync -avz -e "ssh -p 22" /home/user/ user@192.168.1.10:/backup/
📦 二、本機備份範例:每日自動同步
假設你要每天備份 /var/www/ 網站資料至 /mnt/backup/,可編寫如下腳本:
# /usr/local/bin/backup_web.sh
#!/bin/bash
rsync -avh --delete /var/www/ /mnt/backup/www/
echo "$(date '+%F %T') - Backup completed." >> /var/log/rsync-backup.log
設定為每天凌晨執行:
# 使用 cron
sudo crontab -e
0 2 * * * /usr/local/bin/backup_web.sh
# 或使用 systemd timer(更穩定)
sudo systemctl edit --force --full backup.service
sudo systemctl edit --force --full backup.timer
🌐 三、遠端同步:跨伺服器增量備份
rsync 可結合 SSH 金鑰免密登入,安全同步到遠端機房或雲端備援主機。
# 建立金鑰與分發
ssh-keygen -t rsa
ssh-copy-id user@backup-server
# 同步命令
rsync -avz --progress /data/ user@backup-server:/data_backup/
🧭 行動清單
✅ 建立 rsync 備份腳本並測試同步 ✅ 設定 cron 或 systemd timer 自動化排程 ✅ 使用 SSH 金鑰提升安全性 ✅ 驗證 log 記錄與同步結果
🛡️ 四、最佳化與常見錯誤
- --delete:刪除目標端不存在的檔案(維持一致性)。
- --exclude:排除暫存或快取目錄(如
--exclude "cache/")。 - Permission denied → 檢查 SSH 金鑰與目錄權限。
- No space left on device → 加入
--max-size限制檔案大小。
📘 結語
rsync 是 Linux 系統維運中不可或缺的工具,能在不影響服務的情況下快速同步資料。搭配 systemd 或 cron 自動化排程,可大幅降低人工維護負擔,確保資料安全無虞。
🔗 延伸閱讀
— WWFandy・主題筆記
沒有留言: