SCP – Rsync
如何透過 SSH 安全地將遠端伺服器資料夾複製到本機:SCP 與 Rsync 實戰
在日常的系統管理或網站開發中,我們經常需要將遠端伺服器上的備份檔案、日誌或整個專案資料夾完整地複製回本機電腦。透過 SSH 進行加密連線傳輸是最安全且業界標準的做法。本文將為你示範兩種最常用的工具:SCP 與 Rsync,幫助你選擇最適合當前情境的解決方案。
1為什麼選擇 SSH 協定進行傳輸?
SSH(Secure Shell)不僅能讓你遠端登入伺服器下達指令,它還提供了一條加密的隧道供資料傳輸使用。無論是 SCP 或 Rsync,只要在底層透過 SSH 進行連線,你的資料在經過公開網路時就不會被輕易竊聽或竄改。相較於傳統未加密的 FTP 協定,這能大幅降低機密文件或網站原始碼外洩的風險。
2方法一:使用 SCP 指令(適合輕量級傳輸)
SCP(Secure Copy Protocol)幾乎內建於所有類 Unix 系統(包含 macOS、Linux 以及 Windows 10+ 的 PowerShell)中。它的語法非常直覺,與本地端複製檔案的 cp 指令十分相似。
複製整個資料夾的語法
要複製資料夾,我們必須加上 -r(遞迴,recursive)參數:
# 語法:scp -r [使用者帳號]@[伺服器IP或域名]:[遠端路徑] [本機路徑]
scp -r root@192.168.1.100:/var/www/my_project /Users/local_user/Desktop/
如果你的伺服器 SSH 不是使用預設的 Port 22,你需要使用大寫的
-P 來指定連接埠。例如:scp -P 2222 -r user@server:/path ./local_path。
3方法二:使用 Rsync 指令(推薦!支援斷點續傳)
雖然 SCP 簡單好用,但當你需要同步龐大的專案、大量的圖庫或快取(Cache)文件時,Rsync 絕對是首選。它只會傳輸有差異(修改過)的部分,大幅節省網路頻寬,而且支援斷點續傳。
Rsync 的強大同步語法
使用 Rsync 時,我們通常會搭配 -a(封存模式,保留權限)、-v(顯示詳細過程)、-z(傳輸時壓縮資料)以及 -e ssh(指定透過 SSH)。
# 語法:rsync -avz -e "ssh -p 22" [使用者]@[伺服器]:[遠端路徑] [本機路徑]
rsync -avz -e ssh root@192.168.1.100:/var/www/my_project /Users/local_user/Desktop/
在使用 Rsync 時,
/var/www/my_project(無斜線)代表「複製整個 my_project 資料夾」;但如果是 /var/www/my_project/(有斜線),則代表「只複製 my_project 資料夾內部的所有內容」,操作前請務必仔細檢查!
4SCP 與 Rsync 該選哪一個?終極比較表
這兩個指令各有千秋,我們可以從效能、中斷恢復與使用情境來對比:
| 特性與功能 | SCP | Rsync |
|---|---|---|
| 傳輸速度 | 普通(每次覆蓋重傳) | 極快(增量同步) |
| 斷點續傳 | 不支援 ❌ | 完美支援 ✅ |
| 頻寬壓縮 | 不支援 ❌ | 支援 (使用 -z 參數) ✅ |
| 最佳使用情境 | 傳輸單一或少量的設定檔 | 大型網站搬家、定期備份、幾 GB 的資料庫 |
5傳輸前的環境檢查清單
在開始搬運伺服器上的資料前,請確認本機與伺服器已滿足以下條件,確保傳輸過程不會意外中斷:
總結來說,對於日常的技術維運,建議習慣使用 Rsync 作為預設的傳輸工具。不僅因為它的增量同步機制能替你省下寶貴的時間,更因為它在網路不穩時展現的容錯能力是 SCP 無法比擬的。現在就打開你的終端機,試著將伺服器上的測試檔案同步回本機吧!