Linux 實戰教學:用 rsync 同 cron 砌一套自動化備份
好多公司啲 server 冇做備份,出事嗰陣先發現啲 data 全部冇得救。今日就同大家講下,點樣用 Linux 內置嘅兩個工具 —— rsync 同 cron —— 砌一套自動化備份,唔使錢、唔使裝第三方軟件,十幾分鐘就搞掂。
點解要用 rsync?
rsync 係 Linux 最常用嘅同步工具,佢嘅好處係「增量備份」:第一次抄晒全部檔案,之後每次只抄有改動嘅部分。咁樣每日備份快好多,又慳 bandwidth 同儲存空間。
仲有一樣好重要:rsync 可以透過 SSH 做遠端備份,即係話你可以將 A 機嘅 data 備份去 B 機,中間啲傳輸仲係加密嘅。
Step 1:裝 rsync(大部分 distro 都自帶)
# Debian / Ubuntu
sudo apt update && sudo apt install -y rsync
CentOS / RHEL / Rocky
sudo dnf install -y rsync
檢查版本
rsync --version
Step 2:設定 SSH 免密碼登入(遠端備份先需要)
如果你想備份去另一部機,要先生成 SSH key 並複製過去,等 rsync 可以自動跑而唔使每次入密碼:
# 喺來源機(要備份嘅機)生成 key
ssh-keygen -t ed25519 -N "" -f ~/.ssh/id_rsync
複製公鑰去目標機(備份目的地)
ssh-copy-id -i ~/.ssh/id_rsync.pub backup@192.168.1.100
測試免密碼登入
ssh -i ~/.ssh/id_rsync backup@192.168.1.100 "echo OK"
如果最後一行出到 `OK`,就代表設定成功。
Step 3:寫一個 rsync 備份指令
以下係一個典型嘅備份指令,將 `/var/www` 同 `/etc` 備份去遠端機:
rsync -avz --delete \
-e "ssh -i ~/.ssh/id_rsync" \
/var/www /etc \
backup@192.168.1.100:/srv/backup/server01/
逐個參數解釋下:
– `-a`:archive 模式,保留權限、時間戳、symbolic link 等
– `-v`:verbose,顯示進度
– `-z`:傳輸時壓縮,慳 bandwidth
– `–delete`:刪除目標端多出嚟嘅檔案,令兩邊完全一致
– `-e “ssh -i …”`:指定用邊條 SSH key
⚠️ 小心 `–delete`:如果你唔肯定,第一次可以先唔加 `–delete`,睇清楚結果先再決定。
Step 4:寫成 script
將指令寫入一個 script,方便管理:
#!/bin/bash
/usr/local/bin/backup.sh
LOGFILE="/var/log/backup.log"
DEST="backup@192.168.1.100:/srv/backup/server01/"
echo "[$(date '+%F %T')] 開始備份" >> "$LOGFILE"
rsync -avz --delete \
-e "ssh -i ~/.ssh/id_rsync" \
/var/www /etc \
"$DEST" >> "$LOGFILE" 2>&1
if [ $? -eq 0 ]; then
echo "[$(date '+%F %T')] 備份成功" >> "$LOGFILE"
else
echo "[$(date '+%F %T')] 備份失敗!" >> "$LOGFILE"
fi
之後俾佢執行權限:
sudo chmod +x /usr/local/bin/backup.sh
Step 5:用 cron 定時執行
最後一步,用 cron 設定每日自動跑。編輯 root 嘅 crontab:
sudo crontab -e
加入呢一行,代表每日凌晨 2:30 執行備份:
30 2 * * * /usr/local/bin/backup.sh
cron 嘅時間格式係「分 時 日 月 星期」,所以 `30 2 * * *` = 每日 2 點 30 分。
如果你想每小時備份一次,就改成:
0 * * * * /usr/local/bin/backup.sh
檢查有冇真係行到
過咗設定時間後,你可以睇下 log 同 cron 執行記錄:
# 睇備份 log
tail -20 /var/log/backup.log
睇 cron 有冇執行到
grep CRON /var/log/syslog | tail -20
總結
就係咁簡單:rsync 做同步 + SSH 做加密傳輸 + cron 做排程,三個工具加埋就係一套完整嘅自動化備份。呢套嘢最大嘅好處係免費、穩定、而且喺任何 Linux distro 都行到。
🔗 參考資料:NVD NIST 漏洞資料庫
當然,真正嘅備份仲要考慮埋「離線副本」(offsite backup)同「定期測試還原」——但呢啲留返下次再講。你今日不妨先喺自己部機試下呢套流程,等真係需要嗰陣,你已經有個可以隨時救你嘅 backup 喺度。
#server #Linux #IT教學 #技術分享 #自動化




