From 49b9d8b9b1b4d21449fe711b4fb08bfd566489c6 Mon Sep 17 00:00:00 2001 From: honjow Date: Wed, 25 Dec 2024 01:19:56 +0800 Subject: [PATCH] fix: correct multipart image merge path handling --- __frzr-deploy | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/__frzr-deploy b/__frzr-deploy index f39f9b2..457e736 100644 --- a/__frzr-deploy +++ b/__frzr-deploy @@ -173,6 +173,11 @@ handle_multipart_image() { # 首先检查新格式(.partN-T) local first_part=$(find "$dir_name" -maxdepth 1 -type f -name "${base_name_no_ext}.part1-*.img.*" | head -n1) if [ -n "$first_part" ]; then + # 获取去除部分(partN-T)的实际后缀名 + local real_ext=$(echo "$first_part" | sed "s/.*${base_name_no_ext}\.part1-[0-9]\+//") + + local merged_file_name="${dir_name}/${base_name_no_ext}${real_ext}" + # 从文件名中提取总部分数 local total_parts=$(echo "$first_part" | grep -o 'part1-[0-9]*' | cut -d'-' -f2) echo "Found multipart image with $total_parts parts (new format)" >&2 @@ -180,7 +185,7 @@ handle_multipart_image() { # 检查所有部分是否存在 local missing_parts=0 for ((i=1; i<=$total_parts; i++)); do - if [ ! -f "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}.img."* ]; then + if [ ! -f "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}${real_ext}" ]; then echo "Missing part $i of $total_parts" >&2 missing_parts=1 break @@ -194,18 +199,18 @@ handle_multipart_image() { # 合并文件 echo "Merging parts..." >&2 - : > "$base_file" # 清空或创建目标文件 + : > "$merged_file_name" # 清空或创建目标文件 for ((i=1; i<=$total_parts; i++)); do - cat "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}.img."* >> "$base_file" + cat "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}${real_ext}" >> "$merged_file_name" done # 清理分包文件 echo "Cleaning up part files..." >&2 for ((i=1; i<=$total_parts; i++)); do - rm -f "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}.img."* + rm -f "${dir_name}/${base_name_no_ext}.part${i}-${total_parts}${real_ext}" done - echo "$base_file" + echo "$merged_file_name" return 0 fi