# Linux 伺服器自動備份攻略:用 rsync + cron 打造企業級數據保護
做 IT 嘅你一定明,數據就係公司命脈。但係唔少中小企仲係靠人手抄 file 去外置硬碟做備份,唔單止嘥時間,仲好易漏。今日就同大家分享點樣用 Linux 內置嘅 rsync 配搭 cron job,砌一個簡單但可靠嘅自動備份系統。
## 點解揀 rsync 做備份?
rsync 係 Linux 世界嘅老臣子,佢最勁嘅地方係**增量同步**——只會複製有改動過嘅檔案,唔會次次都由頭抄過。咁樣唔單止快,仲可以慳 bandwidth。對於每日要做備份嘅環境嚟講,呢個特性真係好重要。
另外 rsync 支援 SSH 傳輸,即係話你可以將備份 send 去遠端伺服器,中途啲數據係加密嘅,唔怕俾人 sniff。
## Step 1:基本 rsync 指令
最簡單嘅 local backup:
rsync -av /source/path/ /backup/path/
參數解釋:
– `-a`:archive mode,保留權限、時間戳、symlink
– `-v`:verbose,睇住佢抄緊咩 file
如果要 backup 去 remote server:
rsync -avz -e ssh /source/path/ user@192.168.1.100:/backup/path/
`-z` 會壓縮傳輸,`-e ssh` 指定用 SSH 通道。
## Step 2:加入自動刪除舊檔案
備份最怕就係塞爆 hard disk。rsync 有個 `–delete` flag,會將目的地有多但來源冇嘅檔案刪除,保持兩邊一致:
rsync -av --delete /source/path/ /backup/path/
⚠️ 小心:`–delete` 會真係刪嘢,建議第一次用嗰陣加 `–dry-run` 試咗先:
rsync -av --delete --dry-run /source/path/ /backup/path/
## Step 3:用 cron 設定定時備份
編輯 crontab:
crontab -e
加入以下呢行,每日凌晨 2 點自動執行備份:
0 2 * * * rsync -av --delete /data/ /backup/data/ >> /var/log/backup.log 2>&1
## Step 4:進階玩法 — 保留多個版本
rsync 本身唔識做 versioning,但係可以配合 `–link-dest` 做到類似 snapshot 嘅效果:
#!/bin/bash
DATE=$(date +%Y%m%d)
DEST="/backup/daily/$DATE"
LATEST="/backup/daily/latest"
rsync -av --delete --link-dest="$LATEST" /data/ "$DEST"
rm -f "$LATEST"
ln -s "$DEST" "$LATEST"
呢個 script 嘅原理係:新嘅 backup 會用 hard link 指向舊 backup 入面冇改動過嘅檔案,只有改動咗嘅檔案先會佔用新空間。咁樣你可以保留 30 日嘅 backup,但實際只佔用差唔多一份完整 backup 嘅空間。
## Step 5:加埋通知機制
備份完咗但冇人知,等於冇做。加個 email notification:
#!/bin/bash
rsync -av --delete /data/ /backup/data/ 2>&1 | mail -s "每日備份報告 $(date)" admin@company.com
或者用 curl send 去 Slack/Teams webhook,等同事可以即時知道備份狀態。
## 總結
rsync + cron 呢個組合雖然簡單,但係已經可以應付到唔少中小企嘅備份需求。當然,如果你嘅環境比較複雜(例如要 backup database、VM),建議考慮專業嘅備份軟件。但係對於 file server、web server 呢類場景,rsync 絕對係一個性價比極高嘅選擇。
🔗 參考資料:NVD NIST 漏洞資料庫
記住:備份嘅黃金法則是 **3-2-1** — 3 份 copies、2 種媒體、1 份 offsite。rsync 幫你搞掂 local + remote 兩份,剩低嘅就係你要確保有 offsite backup 啦!
#Linux #技術分享 #IT教學 #備份




