feat: 添加打包日志
这个提交包含在:
@@ -294,10 +294,39 @@ create_archive() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log "开始打包:$archive"
|
# 估算源大小用于显示百分比(失败则只显示已写入字节)
|
||||||
local tar_err
|
local src_kb=0
|
||||||
tar_err="$(tar -czf "$archive" "${paths[@]}" 2>&1)"
|
src_kb="$(du -sk "${paths[@]}" 2>/dev/null | awk '{s+=$1} END{print s+0}')"
|
||||||
|
if [[ "$src_kb" -gt 0 ]]; then
|
||||||
|
log "开始打包:$archive(源约 $(awk -v k="$src_kb" 'BEGIN{printf "%.1fG", k/1024/1024}'))"
|
||||||
|
else
|
||||||
|
log "开始打包:$archive"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local tar_log="${archive}.tar.log"
|
||||||
|
: > "$tar_log"
|
||||||
|
tar -czf "$archive" "${paths[@]}" 2>"$tar_log" &
|
||||||
|
local tar_pid=$!
|
||||||
|
|
||||||
|
local start_ts=$(date +%s) cur_kb pct elapsed
|
||||||
|
while kill -0 "$tar_pid" 2>/dev/null; do
|
||||||
|
sleep 5
|
||||||
|
kill -0 "$tar_pid" 2>/dev/null || break
|
||||||
|
cur_kb="$(du -k "$archive" 2>/dev/null | awk '{print $1+0}')"
|
||||||
|
elapsed=$(( $(date +%s) - start_ts ))
|
||||||
|
if [[ "$src_kb" -gt 0 ]]; then
|
||||||
|
pct=$(awk -v c="$cur_kb" -v s="$src_kb" 'BEGIN{p=c*100/s; if(p>99)p=99; printf "%.0f", p}')
|
||||||
|
log "打包进度:已写入 $(awk -v k="$cur_kb" 'BEGIN{printf "%.2fG", k/1024/1024}') / $(awk -v k="$src_kb" 'BEGIN{printf "%.2fG", k/1024/1024}') (${pct}%),耗时 ${elapsed}s"
|
||||||
|
else
|
||||||
|
log "打包进度:已写入 $(awk -v k="$cur_kb" 'BEGIN{printf "%.2fG", k/1024/1024}'),耗时 ${elapsed}s"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
wait "$tar_pid"
|
||||||
local rc=$?
|
local rc=$?
|
||||||
|
local tar_err
|
||||||
|
tar_err="$(cat "$tar_log" 2>/dev/null)"
|
||||||
|
rm -f "$tar_log"
|
||||||
if [[ $rc -ne 0 ]]; then
|
if [[ $rc -ne 0 ]]; then
|
||||||
err "打包失败 (rc=$rc): $tar_err"
|
err "打包失败 (rc=$rc): $tar_err"
|
||||||
return 1
|
return 1
|
||||||
@@ -305,7 +334,7 @@ create_archive() {
|
|||||||
if [[ -n "$tar_err" ]]; then
|
if [[ -n "$tar_err" ]]; then
|
||||||
dbg "tar 输出: $tar_err"
|
dbg "tar 输出: $tar_err"
|
||||||
fi
|
fi
|
||||||
ok "打包完成:$archive ($(du -h "$archive" | awk '{print $1}'))"
|
ok "打包完成:$archive ($(du -h "$archive" | awk '{print $1}')),总耗时 $(( $(date +%s) - start_ts ))s"
|
||||||
|
|
||||||
ARCHIVE_FILES=()
|
ARCHIVE_FILES=()
|
||||||
if [[ -n "$COMMON_SPLIT_SIZE" ]]; then
|
if [[ -n "$COMMON_SPLIT_SIZE" ]]; then
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户