diff --git a/baidu-backup.sh b/baidu-backup.sh index 1ed33a6..ff4a8c1 100755 --- a/baidu-backup.sh +++ b/baidu-backup.sh @@ -46,13 +46,27 @@ echo "[1/5] 📦 打包项目文件..." rm -f "$ZIP_FILE" cd "$PARENT_DIR" -# 先统计文件总数 -TOTAL_FILES=$(find "$PROJECT_NAME" -not -path "${PROJECT_NAME}/.git/*" -type f | wc -l | tr -d ' ') -echo " 📊 共 ${TOTAL_FILES} 个文件" +# 需要排除的目录:依赖、编译产物、缓存(减小备份体积) +ZIP_EXCLUDES=( + "${PROJECT_NAME}/.git/*" + "*/node_modules/*" + "*/.next/*" + "*/dist/*" + "*/.cache/*" + "*/.turbo/*" + "*/coverage/*" + "*.DS_Store" +) + +# 先统计文件总数(与上面的排除规则保持一致,保证进度条准确) +TOTAL_FILES=$(find "$PROJECT_NAME" \ + -type d \( -name node_modules -o -name .git -o -name .next -o -name dist -o -name .cache -o -name .turbo -o -name coverage \) -prune \ + -o -type f -print | wc -l | tr -d ' ') +echo " 📊 共 ${TOTAL_FILES} 个文件(已排除依赖/编译/缓存)" # 打包并实时显示百分比 COUNTER=0 -zip -r "$ZIP_FILE" "$PROJECT_NAME" -x "${PROJECT_NAME}/.git/*" 2>&1 | while IFS= read -r line; do +zip -r "$ZIP_FILE" "$PROJECT_NAME" -x "${ZIP_EXCLUDES[@]}" 2>&1 | while IFS= read -r line; do COUNTER=$((COUNTER + 1)) PCT=$((COUNTER * 100 / TOTAL_FILES)) if [ $PCT -gt 100 ]; then PCT=100; fi