Linux 實戰教學:用 rsync 同 cron 砌一套自動化備份

Linux 實戰教學:用 rsync 同 cron 砌一套自動化備份 好多公司啲 server 冇做備份,出事嗰陣先發現啲 data 全部冇得救。今日就同大家講下,點樣用 Linux 內置嘅兩個工具 —— rsync 同 cron —— 砌一套自動化備份,唔使錢、唔使裝第三方軟件,十幾分鐘就搞掂。 點解要用 rsync? rsync 係 Linux 最常用嘅同步工具,佢嘅好處係「增量備份」:第一次...

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教學 #技術分享 #自動化

Linux 實戰教學:用 rsync 同 cron 砌一套自動化備份 - 文章重點速覽 infographic