# Linux rsync 自動備份教學:用 Cron Job 定時同步檔案保平安
做 IT 嘅人都知,**備份**係最後一道防線。但好多時啲人貪方便,就咁 copy paste 去外置 hard disk 就算,結果一係唔記得做,一係做錯。今日就同大家分享點樣用 Linux 入面嘅 **rsync** 配合 **cron job**,做到全自動定時備份,set 好之後就唔使再理。
## rsync 係咩嚟?
**rsync**(remote sync)係 Linux 世界最強大嘅檔案同步工具。佢最大嘅賣點係**增量同步**——只會複製有改動過嘅檔案,唔會次次都由頭抄過。對於大型檔案庫或者每日備份嚟講,呢個功能慳返唔少時間同 bandwidth。
基本語法係咁:
rsync -av /來源路徑/ /目的地路徑/
– `-a`:archive mode,保留權限、時間戳、symlink
– `-v`:verbose,顯示進度
– 路徑後面有 `/` 代表同步目錄內容,冇 `/` 就係同步整個目錄
## rsync 進階用法你要識
### 1. 排除唔需要嘅檔案
備份嗰陣有啲嘢根本唔使抄,例如 cache、log、node_modules。用 `–exclude` 就得:
rsync -av --exclude='node_modules' --exclude='*.log' --exclude='.cache' \
/home/user/projects/ /mnt/backup/projects/
### 2. 限速唔好扯爆 network
公司 network 繁忙時段做備份?加個 `–bwlimit` 限速,唔會影響其他同事:
rsync -av --bwlimit=5000 /data/ /backup/data/
# 限速 5000 KB/s ≈ 5 MB/s
### 3. 刪除目的地多餘檔案
預設 rsync 唔會刪除目的地嘅檔案。如果你想 backup 同 source 完全一致(mirror mode),加 `–delete`:
rsync -av --delete /source/ /destination/
⚠️ 小心!`–delete` 會刪走 destination 有但 source 冇嘅檔案。建議第一次用加 `–dry-run` 試咗先:
rsync -av --delete --dry-run /source/ /destination/
### 4. SSH 遠端備份
rsync 支援經 SSH 同步去 remote server,唔使裝任何額外嘢:
rsync -avz -e ssh /local/data/ user@192.168.1.100:/remote/backup/
`-z` 係壓縮傳輸,`-e ssh` 指定用 SSH。
## 用 Cron Job 做到全自動
set 好 rsync command 之後,下一步就係用 **cron** 定時執行。編輯 crontab:
crontab -e
加一行,例如每日凌晨 2 點自動備份:
0 2 * * * rsync -av --exclude='node_modules' /home/user/data/ /mnt/backup/data/ >> /var/log/backup.log 2>&1
格式係:`分 時 日 月 星期 command`
常用 cron 時間例子:
0 2 * * * # 每日凌晨 2 點
0 */6 * * * # 每 6 小時一次
0 2 * * 0 # 每個星期日凌晨 2 點
30 8 1 * * # 每月 1 號早上 8:30
## 完整備份 Script 範例
將 rsync 包裝成 script,加埋 log 同 error handling:
#!/bin/bash
# backup.sh - 每日自動備份 script
SOURCE="/home/user/data"
DEST="/mnt/backup/data"
LOG="/var/log/backup_$(date +%Y%m%d).log"
echo "=== 備份開始 $(date) ===" >> $LOG
rsync -av --delete \
--exclude='node_modules' \
--exclude='*.log' \
--exclude='.cache' \
--bwlimit=10000 \
$SOURCE/ $DEST/ >> $LOG 2>&1
if [ $? -eq 0 ]; then
echo "✅ 備份成功 $(date)" >> $LOG
else
echo "❌ 備份失敗 $(date)" >> $LOG
# 可以加 send email / webhook 通知
fi
記得 `chmod +x backup.sh` 俾執行權限。
## 備份策略小貼士
1. **3-2-1 法則**:3 份 copies、2 種媒體、1 份 offsite
2. **定期測試還原**:backup 唔係做完就算,要定期試 restore 確認啲 data 真係用得返
3. **加密敏感資料**:rsync 可以配合 `–rsh` 行 SSH tunnel,傳輸過程加密
4. **保留多個版本**:用 `rsync –link-dest` 做到 incremental snapshot,每日一個版本但唔會重複佔用空間
rsync + cron 呢個組合簡單得嚟好 powerful,無論係個人 project 定公司 server 都適用。set 好一次就唔使再煩,真正嘅「set and forget」!
🔗 參考資料:NVD NIST 漏洞資料庫
希望呢篇教學幫到大家。有咩問題歡迎留言討論!
#技術分享 #備份 #IT教學 #Linux




