辛苦搭了快整整一個月的工作流,畫布上累積了幾十條心血結晶。但天有不測風雲,伺服器硬碟損壞、手滑誤刪節點,或是升級 Docker 容器時資料卷沒掛載好,都有可能讓你一夕之間回到石器時代。今天我們就用 n8n 幫自己做備份:每天定時把所有工作流匯出成 JSON 檔案,自動提交(Git Commit)並推送到個人的私有 GitHub 倉庫,讓你的自動化資產擁有完整的版本時光機。
第一站:取得全站工作流資料
n8n 本身就有提供一套強大的內部 REST API,甚至直接提供了內建的「n8n」節點。我們在畫布拉出一個排程觸發器,設定為每天深夜執行一次。緊接著接上 n8n 節點,動作選擇「Workflow - Get Many」,這樣只要跑一次,系統就會把當前伺服器裡每一條現存工作流的名稱、啟用狀態以及完整結構全部以 JSON 清單的方式抓出來。
第二站:資料清洗與敏感資訊保護
把工作流備份到外部倉庫時,最需要留意的就是安全問題。幸好 n8n 匯出工作流時,預設就不會把 API Key 或密碼(Credentials)明文寫進工作流的 JSON 本體裡,只會記錄憑證的關聯 ID。我們在後面接一個簡單的資料處理節點,把每一條工作流獨立分裝,並將檔案名稱統一規範成「工作流名稱_ID.json」,順便把特殊字元與空白過濾掉,方便後續在檔案系統裡乾淨存放。
第三站:寫入本地目錄或容器卷
拿到整理好的 JSON 文本後,可以透過「Write Binary File」節點,或是透過容器內部的 SSH / 終端執行節點(Execute Command),把這些 JSON 檔案一個個覆寫進伺服器上的特定備份資料夾。這個資料夾平時已經預先初始化好 Git 倉庫,並綁定好你的 GitHub 存取權限。
第四站:自動執行 Git Commit 與 Push
檔案更新完畢後,接上一個「Execute Command」節點,直接下達標準的 Git 操作指令:先執行 git add . 暫存所有變更,接著執行 git commit -m "Auto backup: $(date)",最後下達 git push origin main 將最新進度推送到 GitHub。如果這一天你的工作流完全沒有任何修改,Git 會很聰明地辨識出沒有變更而自動略過,不製造多餘的垃圾紀錄。
第五站:推送成功通知與復原機制
在 Git 推送完成後,順手接上 Telegram 節點回報一聲「本日工作流備份成功,已同步至 GitHub」。萬一未來哪天伺服器真的掛掉,你隨時可以打開 GitHub 倉庫,不僅能清楚看見每一次畫布修改的 Diff 歷史紀錄,更可以直接把 JSON 檔案下載下來、拖進全新的 n8n 畫布裡一秒匯入,滿血復活。明天我們走出本機環境,聊聊如何把自建的 n8n 部署到雲端 VPS,並配上正式的 HTTPS 網域名稱。