前言
以往 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