Linux 網站搬家完整教學|SCP / RSYNC 傳輸與備份實戰(2026)

Linux 網站搬家(遷移)是伺服器管理中最常見的操作之一,主要分為「檔案搬移」與「資料庫遷移」兩大部分。在實務上,通常會先進行網站打包備份,再透過 SCP 或 RSYNC 將資料傳輸到新主機,接著還原資料庫,最後確認權限設定是否正確。本文完整說明檔案搬移與資料庫遷移的實戰指令,並比較SCP與RSYNC的差異,協助你安全完成一次Linux網站搬家。

📌 開始網站搬家前的必要條件(SSH連線確認)

在進行 Linux 網站搬家之前,必須先確認 SSH 連線正常,因為 SCP 與 RSYNC 都是透過 SSH 進行資料傳輸。如果 SSH 無法連線,將會導致整個搬家流程失敗。

可以先用以下指令快速測試新主機的 SSH 連線是否正常:

ssh root@192.168.0.10 "echo SSH連線正常"

如果畫面回傳「SSH連線正常」字樣,代表連線沒有問題,可以放心進行後續搬家流程。

👉 如果你遇到 SSH 無法連線問題,可以先參考這篇完整排錯教學:Linux SSH 無法連線排錯教學

一、SCP 網站搬家完整流程|Linux 網站打包、壓縮與解壓實戰

SCP 是 Linux 中最常見的檔案傳輸工具,適合用於小型網站搬家或單次備份。但在實務操作中,不建議直接搬移整個資料夾,而是應該先進行「網站打包」,再進行傳輸,最後在新主機解壓縮還原。

本範例環境如下:舊主機 IP 為 192.168.0.5,網站目錄為 /var/www/html/website_old,包含 images 與 userfiles。新主機 IP 為 192.168.0.10,目標路徑為 /var/www/html/website_new。

網站打包流程(非常重要)

cd /var/www/html/website_old
tar czvf website_backup.tar.gz images userfiles

此步驟會將網站圖片與使用者上傳資料打包成單一檔案 website_backup.tar.gz,這個動作稱為「網站打包」,可以有效減少 SCP 傳輸錯誤。

Linux 安裝 SCP 指令(OpenSSH Client)

大多數 Linux 發行版都已內建 SCP(Secure Copy)指令,如果輸入 scp 出現找不到指令,可依照以下方式安裝。

CentOS / Rocky Linux / AlmaLinux

sudo yum install openssh-clients -y

Ubuntu / Debian

sudo apt update
sudo apt install openssh-client -y

Arch Linux

sudo pacman -S openssh

確認 SCP 是否安裝成功

scp -V

若系統成功顯示 OpenSSH 版本資訊,即代表 SCP 已可正常使用。

案例一:SCP 傳輸到新主機暫存區

scp website_backup.tar.gz root@192.168.0.10:/tmp/

這裡會先將檔案傳到 /tmp 暫存區,避免直接影響網站目錄結構,是標準 Linux 網站搬家流程。

案例二:登入新主機並解壓

ssh root@192.168.0.10
cd /var/www/html/website_new/
tar xzvf /tmp/website_backup.tar.gz

解壓後會自動還原 images 與 userfiles,完成網站資料還原。

案例三:清除暫存檔

rm -f /tmp/website_backup.tar.gz

避免佔用磁碟空間,這是正式環境必做步驟。

🆚 二、SCP vs RSYNC 指令詳細區別(網站搬家必看)

在 Linux 網站搬家實務中,SCP 與 RSYNC 是最常見的兩種工具,但用途完全不同。以下表格可以幫助你快速判斷應該使用哪一種方式。

SCP 與 RSYNC 功能差異對照
項目SCP(Secure Copy)RSYNC(Remote Sync)
核心功能單向檔案複製雙端同步+備份
使用概念一次性「搬檔案」持續「同步資料」
適合情境小型網站搬家/單次備份正式網站搬家/大型資料同步
是否支援續傳不支援支援(斷線可續傳)
是否只傳變更不支援只同步變更部分
傳輸效率一般(每次全傳)高(增量傳輸)
指令複雜度簡單中等
大型網站適用不建議非常適合
備份用途一次性備份長期備份/排程備份

如果你同時使用 Windows 環境進行備份或網站搬移,可以參考 Robocopy 完整教學|Windows 備份指令、NAS 同步與 WindowsImageBackup 實戰,了解 Windows 系統下的自動化備份與同步方法。

💡 結論:SCP 適合簡單搬檔案,而 RSYNC 才是專業網站搬家與長期備份工具。

三、RSYNC 網站搬家與同步備份實戰

RSYNC 是比 SCP 更進階的工具,適合大型網站搬家與長期備份。它的最大優勢是「只同步變更檔案」,因此非常適合正式環境使用。

RSYNC 安裝指令

CentOS / Rocky Linux / AlmaLinux:

sudo yum install -y rsync

Ubuntu / Debian:

sudo apt update
sudo apt install -y rsync

安裝完成後可用以下指令確認版本:

rsync --version

案例一:同步 images

rsync -avzP /var/www/html/website_old/images/ root@192.168.0.10:/var/www/html/website_new/images/

案例二:同步 userfiles

rsync -avzP /var/www/html/website_old/userfiles/ root@192.168.0.10:/var/www/html/website_new/userfiles/

案例三:同步整站

rsync -avzP /var/www/html/website_old/ root@192.168.0.10:/var/www/html/website_new/

RSYNC 非常適合網站搬家後的持續同步,例如更新圖片或資料時,只會傳輸變更部分,大幅降低頻寬與時間成本。

# RSYNC 特性
# - 增量同步
# - 支援續傳
# - 適合大型網站
# - 可用於備份系統

四、資料庫搬遷實戰(MySQL / MariaDB)

網站搬家不能只搬檔案——資料庫(會員資料、文章內容、訂單紀錄等)沒有一起遷移,網站到新主機後通常會出現無法登入、內容空白或資料缺失的狀況。以下是標準的 MySQL / MariaDB 資料庫搬遷流程。

步驟一:在舊主機匯出資料庫

mysqldump -u root -p website_db > website_db_backup.sql

執行後會提示輸入資料庫密碼,完成後會在當前目錄產生 website_db_backup.sql 備份檔。

步驟二:將備份檔傳輸到新主機

scp website_db_backup.sql root@192.168.0.10:/tmp/

也可以改用 rsync,作法跟前面的檔案同步相同,適合資料庫檔案較大的情境。

步驟三:在新主機建立資料庫並還原

mysql -u root -p -e "CREATE DATABASE website_db CHARACTER SET utf8mb4;"
mysql -u root -p website_db < /tmp/website_db_backup.sql

還原完成後,記得檢查網站設定檔(例如 wp-config.php 或框架的 .env)裡的資料庫連線資訊,是否已更新為新主機的帳號、密碼與主機位置。

💡 工程師提醒:mysqldump匯出期間資料庫仍可能有新的寫入,若不停機或切換維護模式,匯出的備份可能不是最新狀態,還原後容易出現資料不一致。正式環境建議選在離峰時段,先將網站切換維護模式再進行匯出,確保搬遷過程資料的一致性。

步驟四:清除暫存檔

rm -f /tmp/website_db_backup.sql

跟檔案搬遷一樣,資料庫備份檔案還原完成後也應該清除暫存,避免遺留在伺服器上造成資安疑慮。

📌 五、網站搬家後的重要步驟:權限與使用者設定

在 Linux 網站搬家完成後,最常見的問題就是檔案權限錯誤,例如網站無法顯示、403 Forbidden 或資料夾無法存取。這通常是因為 user/group 權限未正確設定所導致。

👉 如果你遇到權限問題,可以參考這篇完整教學:Linux 使用者與權限管理完整教學

網站搬家完成後,如果遇到網站錯誤、頁面 500 或 nginx / apache 報錯,可以透過 log 進行分析。這時候 Linux grep 指令可以快速搜尋錯誤關鍵字,幫助你定位問題來源。

👉 建議使用 grep 來進行錯誤日誌分析:Linux grep 指令教學(日誌與錯誤排查)

Linux 網站搬家的完整流程是:確認SSH連線 → 檔案打包與傳輸(SCP或RSYNC)→ 資料庫匯出與還原 → 確認權限設定 → 檢查log排除錯誤。小型網站或單次搬遷可以用SCP快速完成,但正式環境與大型網站建議優先採用RSYNC,兼顧傳輸效率與後續的長期同步備份需求;資料庫則務必記得一起搬遷,並在離峰時段操作,避免資料不一致。

六、常見問題 FAQ

Linux 網站搬家一定要用 scp 嗎?
SCP 並不是唯一選擇,雖然適合小型網站搬移,但正式環境建議使用 rsync,因為它支援續傳與增量同步,可以減少傳輸失敗風險並提升效率。
網站搬家為什麼要先做網站打包?
網站打包可以將多個資料夾整合成單一檔案,方便傳輸與備份,也能降低 SCP 傳輸錯誤,是 Linux 網站搬家標準流程之一。
rsync 和 scp 最大差別是什麼?
SCP 是單向複製工具,而 RSYNC 是同步工具,rsync 只會傳輸變更檔案,因此更適合網站搬家與長期備份作業。
Linux 網站搬家會影響網站運作嗎?
如果在高流量時操作可能會有短暫影響,建議在離峰時間進行搬家,並先完成備份與測試,確保資料完整性。
資料庫遷移需要一起做嗎?
需要,網站搬家除了檔案外,還必須同步 MySQL 或 MariaDB 資料庫,否則網站會出現資料缺失或無法登入的情況,建議用 mysqldump 匯出後在新主機還原。
rsync 可以用來做備份嗎?
可以,rsync 非常適合做定期備份,因為它只會同步變更過的資料,可以大幅節省時間與頻寬,是企業常用方案。
資料庫搬遷時網站需要停機嗎?
建議停機或至少切換成維護模式。因為mysqldump匯出期間資料庫仍可能有新的寫入,若不停機,匯出的備份可能不是最新狀態,還原後容易出現資料不一致,正式環境建議選在離峰時段搬遷。

本文為 Linux 網站搬家的通用操作教學,實際指令與路徑請依你的主機環境調整;正式環境操作前務必先完成備份與測試,資料庫與檔案搬遷建議安排在離峰時段進行。