用 rsync 加 SSH 做零成本伺服器異地備份:一步步教你設定

用 rsync 加 SSH 做零成本伺服器異地備份:一步步教你設定 好多中小企或者個人站長,成日都忽略咗「異地備份」呢樣嘢。部機一壞、畀人勒索加密,或者機房燒咗,你啲數據就真係渣都冇得剩。但係市面上嘅備份軟件又貴,cloud backup 又要月費,唔通真係要等到出事先知死? 其實你唔使使錢買貴嘢,Linux 上面一個免費又古老嘅工具 `rsync`,配搭 SSH 加密通道,已經可以做到好好嘅異地...

用 rsync 加 SSH 做零成本伺服器異地備份:一步步教你設定

好多中小企或者個人站長,成日都忽略咗「異地備份」呢樣嘢。部機一壞、畀人勒索加密,或者機房燒咗,你啲數據就真係渣都冇得剩。但係市面上嘅備份軟件又貴,cloud backup 又要月費,唔通真係要等到出事先知死?

其實你唔使使錢買貴嘢,Linux 上面一個免費又古老嘅工具 `rsync`,配搭 SSH 加密通道,已經可以做到好好嘅異地備份。今次就同大家拆解點樣由零開始,搭一套可靠嘅 rsync + SSH 備份方案。

點解要用 rsync 而唔係 cp 或者 scp?

好多人備份就係直接 `cp -r` 或者 `scp` 成個 directory 抄過去,但咁樣有兩個大問題:

1. 每次都抄晒全部檔案,浪費時間同頻寬
2. 冇得做增量,改咗一個檔案都要成個 folder 重抄

`rsync` 嘅精髓就係「增量同步」——佢會比較兩邊檔案嘅 size 同 modification time,淨係傳送有改動嘅部分,仲可以用 `–delete` 參數確保兩邊完全一致。對住幾百 GB 嘅數據,呢個差距係天同地。

第一步:確認兩邊機都有 rsync 同 SSH

大部分 Linux distribution 預設都裝咗。可以用下面指令 check:

rsync --version | head -1
ssh -V 2>&1 | head -1

如果冇裝,Debian/Ubuntu 用:

sudo apt update && sudo apt install rsync openssh-server -y

CentOS/RHEL 系就用:

sudo yum install rsync openssh-server -y

第二步:設定 SSH Key 免密碼登入

要自動化備份,就唔可以每次都手打密碼。喺來源機(即係你要備份嗰部)生成 SSH key:

ssh-keygen -t ed25519 -C "backup-user" -f ~/.ssh/backup_key

跟住將 public key 抄去目標備份機:

ssh-copy-id -i ~/.ssh/backup_key.pub backup@目標機IP

抄完之後測試下可唔可以免密碼登入:

ssh -i ~/.ssh/backup_key backup@目標機IP "echo 成功連線"

如果成功出到「成功連線」四個字,就代表 SSH Key 設定完成。

第三步:用 rsync 做第一次完整備份

假設你要備份 `/var/www` 同 `/etc` 兩個目錄去備份機嘅 `/backup/server1/`。基本指令係咁:

rsync -avz --delete \
  -e "ssh -i ~/.ssh/backup_key" \
  /var/www/ /etc/ \
  backup@目標機IP:/backup/server1/

逐個參數解釋下:

– `-a`:archive 模式,保留權限、時間戳、symlink 等
– `-v`:verbose,顯示傳送過程
– `-z`:傳送時壓縮,慳頻寬
– `–delete`:目標端有但來源端冇嘅檔案會刪除,確保完全一致
– `-e “ssh …”`:指定用邊條 SSH key 連線

⚠️ 注意:`–delete` 好危險,第一次用嗰陣建議先唔加,確認冇問題先加返。

第四步:用 cron 自動化每日備份

寫一個備份 script,放喺 `/usr/local/bin/backup.sh`:

#!/bin/bash
LOGFILE="/var/log/backup.log"
echo "===== $(date) 開始備份 =====" >> $LOGFILE
rsync -avz --delete \
  -e "ssh -i /home/backup/.ssh/backup_key" \
  /var/www/ /etc/ \
  backup@目標機IP:/backup/server1/ >> $LOGFILE 2>&1
if [ $? -eq 0 ]; then
  echo "備份成功" >> $LOGFILE
else
  echo "備份失敗!請檢查" >> $LOGFILE
fi

然後用 `crontab -e` 加一行,每日凌晨三點跑:

0 3 * * * /usr/local/bin/backup.sh

第五步:驗證備份真係可以還原

備份嘅意義唔係「抄咗」,而係「出事嗰陣還原得到」。定期做一次還原測試,例如還原一個檔案:

rsync -avz -e "ssh -i ~/.ssh/backup_key" \
  backup@目標機IP:/backup/server1/var/www/config.php /tmp/restore_test/

確認個檔案完整,你先至叫做真正「有備份」。

總結

rsync + SSH 係一套零成本、可靠、經得起時間考驗嘅異地備份方案。佢冇靚仔 UI,但勝在穩定、透明、可控。只要記住三件事:用 SSH Key 加密、用 cron 自動化、定期測試還原,你嘅數據就唔會再係「聽天由命」。

下次有機會,再同大家講下點樣配 `rsync –link-dest` 做多版本快照備份,連誤刪檔案都可以救返。

#cloud #自動化 #技術分享 #Linux #IT教學

用 rsync 加 SSH 做零成本伺服器異地備份:一步步教你設定 - 文章重點速覽 infographic