v0.11.0

檔案同步

最後更新

本頁說明 podrun up 如何以 rsync 把本地專案同步到遠端,以及覆寫前的差異預覽。

流程

graph TB
    Start[RsyncToRemote] --> Check{遠端目錄是否為空}
    Check -->|空| Sync[rsync -avz --delete]
    Check -->|非空| Preview[rsync -avni --delete<br/>dry-run]
    Preview --> Changed{有變更}
    Changed -->|否| Sync
    Changed -->|是| Ask[詢問 confirm sync? y/N]
    Ask -->|y/Y| Sync
    Ask -->|其他| Cancel[回傳 cancelled]

差異預覽

遠端目錄已有內容時,先以 rsync -avni --delete 試跑並印出結果。下列行會被視為「沒有變更」而略過:

行 說明
空行 —
sending .../sent .../total size ... rsync 摘要
.d..t....... 開頭 只有目錄時間戳改變

其他任何一行都代表有變更,需輸入 y 或 Y 才會繼續;輸入其他值則回傳 cancelled 並中止 up。確認後寫入一筆 overwrite 紀錄;遠端目錄為空時則寫入 sync 紀錄。

同步

實際同步使用 rsync -avz --delete,遠端多出的檔案會被刪除,讓遠端目錄與本地一致。

排除清單

類別 排除項目
相依套件 node_modules/、vendor/、__pycache__/、*.pyc、.venv/、venv/、env/
版本控制 .git/、.gitignore
本機檔案 .env.local、*.log、.DS_Store、Thumbs.db
建置產物 .next/、app/package-lock.json

差異預覽另外排除 docker-compose.podrun.yml,避免遠端副本被列為變更;實際同步則未排除它,因此 --delete 會先刪除遠端副本,之後由 Compose 改寫 重新產生。

.env 不在排除清單內,會一併同步到遠端。

SSH 行為

項目 設定
認證 sshpass -p $PODRUN_PASSWORD
主機金鑰 StrictHostKeyChecking=no
遠端位址 $PODRUN_USERNAME@$PODRUN_SERVER
EN