Rsync 同步工具超快!

2025/04/09

Categories: 電腦 Tags: hugo Rsync Filezilla

前言

以往 Eddie 製作部落格(本站)的方式是,在本地端用 Hugo 生成好網站(Public)後,打開圖形界面 App「Filezilla」,填入伺服器的密碼,再把檔案複製到伺服器去,操作就像是 Windows 檔案總管或 macOS 的 Finder 一樣簡單。

拋棄 Filezilla

最近,網站的檔案數量來到 700 多了,雖然並不是很多,但是透過 Filezilla 上傳網站,也要個 5 分鐘,就有一點太久了!

擁抱 Rsync

Rsync 是純文字 App,上傳的指令如下:

rsync -avz --delete -e "ssh -p 22" ./public/ username@your.server.com:/var/www/html/your-site-folder

說明

-a:archive 模式,會保留權限、時間戳等資訊。

-v:verbose 模式,會顯示傳輸過程。

-z:傳輸時啟用壓縮,加快速度。

–delete:會刪除遠端伺服器上已不存在於本地的檔案(保持同步)。

-e “ssh -p 22”:指定使用哪個 ssh port(如果不是 22,請改成你自己的)。

./public/:本地的 Hugo 輸出資料夾(注意最後的 / 表示目錄內容)。

username@your.server.com:/var/www/html/your-site-folder:遠端主機的帳號與目標路徑,可以把 domain name 換成 IP 地址。

使用體驗

只能說是相見恨晚阿!幾秒鐘就傳送完畢了,以前爲了「直覺」而一直用圖形界面,殊不知現在只要一行指令就能完成,速度也提升好幾倍。

還可以再簡單一點嗎?

可以!製作「.sh」檔案!

檔案名稱可以叫做 depoy.sh public.sh 123.sh,隨你高興,你記得它就好!

.sh 的內容:

# 部署設定
LOCAL_DIR="/Users/使用者名稱/hugo資料夾/public/"
REMOTE_USER="root"
REMOTE_HOST="domain.com"
REMOTE_PATH="/var/www/html/你的網站資料夾/public"
SSH_PORT=22

# 開始部署
echo "開始同步 Hugo 網站到伺服器..."
rsync -avz --delete -e "ssh -p $SSH_PORT" "$LOCAL_DIR" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}"

# 完成提示
if [ $? -eq 0 ]; then
  echo "✅ 部署完成!"
else
  echo "❌ 部署失敗,請檢查錯誤訊息"
fi

依照你實際的本機資料夾與伺服器網站資料夾,去分別設定 LOCAL_DIR、REMOTE_PATH。

將 XXX.sh 檔案放在 hugo 網站的資料夾底下(如同 Public 也會在 hugo 網站資料夾底下) 。

執行 .sh

進入 hugo 網站資料夾後,輸入:

./你的檔名.sh
>> Home