JCscrew commited on
Commit
7826453
·
1 Parent(s): 374858d

Update script.sh

Browse files
Files changed (1) hide show
  1. script.sh +91 -46
script.sh CHANGED
@@ -55,8 +55,19 @@ download_file() {
55
 
56
  if command -v aria2c >/dev/null 2>&1; then
57
  log_info "使用 aria2c (3 個連線) 進行下載..."
58
- # 使用 -x 3 -s 3,並允許覆蓋,不重複檢查
59
- aria2c --console-log-level=error -c -x 3 -s 3 -k 1M --check-certificate=false --allow-overwrite=true -d "$(dirname "$dest_path")" -o "$filename" "$url"
 
 
 
 
 
 
 
 
 
 
 
60
  else
61
  log_info "使用 wget 進行下載..."
62
  wget -c -O "$dest_path" --quiet --show-progress "$url"
@@ -76,13 +87,57 @@ download_file() {
76
  return 0
77
  }
78
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  log_info "Provisioning Started at $(date)"
80
 
81
- log_step "1/5" "運行 Vast.ai 基礎腳本"
82
  wget -q -O /tmp/default.sh https://raw.githubusercontent.com/vast-ai/base-image/refs/heads/main/derivatives/pytorch/derivatives/comfyui/provisioning_scripts/default.sh
83
  bash /tmp/default.sh || log_warn "基礎腳本遇到非致命錯誤,繼續執行..."
84
 
85
- log_step "2/5" "準備 ComfyUI 目錄與環境"
86
  cd /workspace/ComfyUI || { log_error "找不到 ComfyUI 目錄,中止執行。"; exit 1; }
87
 
88
  log_info "檢測 Python 環境..."
@@ -96,7 +151,15 @@ else
96
  log_warn "使用系統 Python: $PYTHON_BIN"
97
  fi
98
 
99
- log_step "3/5" "安裝 ComfyUI 自定義節點與依賴"
 
 
 
 
 
 
 
 
100
  cd custom_nodes
101
 
102
  install_node "https://github.com/ltdrdata/ComfyUI-Impact-Pack.git"
@@ -134,51 +197,33 @@ done
134
 
135
  cd /workspace/ComfyUI
136
 
137
- log_step "4/5" "下載並解壓縮模型包"
138
- MODELS_ZIP_URL="https://huggingface.co/JCscrew/RisuAI_asset_generator/resolve/main/backup_models/models_pack.zip"
139
- ZIP_PATH="/workspace/ComfyUI/models_pack.zip"
140
 
141
- download_file "user/default/workflows/Single_Posture.json" "https://huggingface.co/JCscrew/RisuAI_asset_generator/resolve/main/Single_Posture.json?download=true"
 
 
 
 
 
 
142
 
143
- MAX_UNZIP_ATTEMPTS=2
144
- UNZIP_ATTEMPT=1
145
- UNZIP_SUCCESS=false
146
 
147
- while [ $UNZIP_ATTEMPT -le $MAX_UNZIP_ATTEMPTS ] && [ "$UNZIP_SUCCESS" = false ]; do
148
- log_info "--- [第 ${UNZIP_ATTEMPT}/${MAX_UNZIP_ATTEMPTS} 次嘗試] ---"
149
 
150
- # 步驟 1: 下載壓縮檔
151
- download_file "$ZIP_PATH" "$MODELS_ZIP_URL"
152
- if [ $? -ne 0 ]; then
153
- log_error "模型壓縮檔下載失敗,無法繼續。"
154
- exit 1
155
- fi
156
 
157
- # 步驟 2: 解壓縮
158
- log_info "正在 'models_pack.zip' 解壓縮至 ComfyUI 目錄並覆蓋現有檔案..."
159
- # 使用 -o 選項來無條件覆蓋檔案
160
- unzip -o "$ZIP_PATH" -d /workspace/ComfyUI/
161
-
162
- if [ $? -eq 0 ]; then
163
- log_success "成功解壓縮模型包。"
164
- UNZIP_SUCCESS=true
165
- # 成功後刪除壓縮檔以釋放空間
166
- rm -f "$ZIP_PATH"
167
- log_info "已刪除 'models_pack.zip'。"
168
- else
169
- log_error "解壓縮失敗!壓縮檔未下載完成。"
170
- UNZIP_ATTEMPT=$((UNZIP_ATTEMPT + 1))
171
- if [ $UNZIP_ATTEMPT -le $MAX_UNZIP_ATTEMPTS ]; then
172
- log_warn "正在刪除損壞的壓縮檔並準備重新下載..."
173
- rm -f "$ZIP_PATH"
174
- sleep 5
175
- else
176
- log_error "已達最大重試次數,解壓縮失敗,可能是因為該檔案被下載的太密集。請取消伺服器租賃、稍等後再重新啟動流程。"
177
- exit 1
178
- fi
179
- fi
180
- done
181
 
182
- log_step "5/5" "環境配置完成"
183
  log_info "ComfyUI 即將啟動。實例已準備就緒。"
184
- echo ""
 
 
55
 
56
  if command -v aria2c >/dev/null 2>&1; then
57
  log_info "使用 aria2c (3 個連線) 進行下載..."
58
+ aria2c --console-log-level=error \
59
+ -c -x 16 -s 16 -k 1M \
60
+ --max-connection-per-server=16 \
61
+ --min-split-size=1M \
62
+ --max-tries=5 \
63
+ --retry-wait=3 \
64
+ --timeout=60 \
65
+ --check-certificate=false \
66
+ --allow-overwrite=true \
67
+ --file-allocation=none \
68
+ -d "$(dirname "$dest_path")" \
69
+ -o "$filename" \
70
+ "$url"
71
  else
72
  log_info "使用 wget 進行下載..."
73
  wget -c -O "$dest_path" --quiet --show-progress "$url"
 
87
  return 0
88
  }
89
 
90
+ download_models_pack() {
91
+ log_info "[並行任務] 開始下載模型包..."
92
+
93
+ local MODELS_ZIP_URL="https://huggingface.co/JCscrew/RisuAI_asset_generator/resolve/main/backup_models/models_pack.zip"
94
+ local ZIP_PATH="/workspace/ComfyUI/models_pack.zip"
95
+ local MAX_ATTEMPTS=2
96
+ local ATTEMPT=1
97
+ local SUCCESS=false
98
+
99
+ while [ $ATTEMPT -le $MAX_ATTEMPTS ] && [ "$SUCCESS" = false ]; do
100
+ log_info "[模型包] 嘗試 ${ATTEMPT}/${MAX_ATTEMPTS}..."
101
+
102
+ download_file "$ZIP_PATH" "$MODELS_ZIP_URL"
103
+
104
+ if [ $? -eq 0 ]; then
105
+ log_info "[模型包] 正在解壓縮..."
106
+ unzip -o -q "$ZIP_PATH" -d /workspace/ComfyUI/
107
+
108
+ if [ $? -eq 0 ]; then
109
+ log_success "[模型包] 成功解壓縮。"
110
+ SUCCESS=true
111
+ rm -f "$ZIP_PATH"
112
+ log_info "[模型包] 已刪除壓縮檔。"
113
+ else
114
+ log_error "[模型包] 解壓縮失敗!"
115
+ rm -f "$ZIP_PATH"
116
+ ATTEMPT=$((ATTEMPT + 1))
117
+ [ $ATTEMPT -le $MAX_ATTEMPTS ] && sleep 5
118
+ fi
119
+ else
120
+ ATTEMPT=$((ATTEMPT + 1))
121
+ fi
122
+ done
123
+
124
+ if [ "$SUCCESS" = false ]; then
125
+ log_error "[模型包] 下載失敗,已達最大重試次數。"
126
+ echo "MODELS_DOWNLOAD_FAILED" > /tmp/download_status
127
+ return 1
128
+ fi
129
+
130
+ echo "MODELS_DOWNLOAD_SUCCESS" > /tmp/download_status
131
+ return 0
132
+ }
133
+
134
  log_info "Provisioning Started at $(date)"
135
 
136
+ log_step "1/4" "運行 Vast.ai 基礎腳本"
137
  wget -q -O /tmp/default.sh https://raw.githubusercontent.com/vast-ai/base-image/refs/heads/main/derivatives/pytorch/derivatives/comfyui/provisioning_scripts/default.sh
138
  bash /tmp/default.sh || log_warn "基礎腳本遇到非致命錯誤,繼續執行..."
139
 
140
+ log_step "2/4" "準備 ComfyUI 目錄與環境"
141
  cd /workspace/ComfyUI || { log_error "找不到 ComfyUI 目錄,中止執行。"; exit 1; }
142
 
143
  log_info "檢測 Python 環境..."
 
151
  log_warn "使用系統 Python: $PYTHON_BIN"
152
  fi
153
 
154
+ log_step "3/4" "並行處理:節點安裝 + 模型下載"
155
+
156
+ # ============ 啟動並行下載任務 ============
157
+ log_info "🚀 啟動模型包下載(後台任務)..."
158
+ download_models_pack &
159
+ DOWNLOAD_PID=$!
160
+
161
+ # ============ 同時進行節點安裝 ============
162
+ log_info "🚀 開始安裝自定義節點(前台任務)..."
163
  cd custom_nodes
164
 
165
  install_node "https://github.com/ltdrdata/ComfyUI-Impact-Pack.git"
 
197
 
198
  cd /workspace/ComfyUI
199
 
200
+ log_info " 等待模型包下載完成..."
201
+ wait $DOWNLOAD_PID
202
+ DOWNLOAD_EXIT_CODE=$?
203
 
204
+ if [ -f /tmp/download_status ]; then
205
+ DOWNLOAD_STATUS=$(cat /tmp/download_status)
206
+ if [ "$DOWNLOAD_STATUS" = "MODELS_DOWNLOAD_FAILED" ]; then
207
+ log_error "模型包下載失敗,請檢查網路或稍後重試。"
208
+ exit 1
209
+ fi
210
+ fi
211
 
212
+ log_success "所有並行任務已完成!"
 
 
213
 
214
+ download_file "user/default/workflows/Single_Posture.json" "https://huggingface.co/JCscrew/RisuAI_asset_generator/resolve/main/Single_Posture.json?download=true"
 
215
 
216
+ log_step "4/4" "清理與最終配置"
 
 
 
 
 
217
 
218
+ if [ -f "/workspace/ComfyUI/input/example.jpg" ]; then
219
+ log_info "正在刪除 example.jpg..."
220
+ rm -f /workspace/ComfyUI/input/example.jpg
221
+ log_success "已刪除 example.jpg。"
222
+ else
223
+ log_info "example.jpg 不存在,無需刪除。"
224
+ fi
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
225
 
226
+ log_success "環境配置完成"
227
  log_info "ComfyUI 即將啟動。實例已準備就緒。"
228
+ echo ""
229
+ echo "📊 總耗時: $(($(date +%s) - $(date -d "$(head -1 /tmp/provision_start_time 2>/dev/null || echo '0 seconds ago')" +%s 2>/dev/null || echo 0))) 秒"