#!/bin/bash # ========================================================== # DairyGoat 项目迁移打包脚本 # 分3个包,按优先级: # Pack1 (~1.8GB): 核心代码+标注+最佳权重+对话记录 [必须] # Pack2 (~1.6GB): 原始数据集图片 [必须] # Pack3 (~2GB): 全部实验权重+训练曲线 [建议] # ========================================================== set -e cd /home/user/work/lch/DairyGoat PACK_DIR="/home/user/work/lch/DairyGoat_migration" mkdir -p "$PACK_DIR" echo "============================================" echo " DairyGoat 项目迁移打包" echo " $(date)" echo "============================================" # ========================================================== # Pack 1: 核心 (代码+标注+最佳权重+对话+配置) # ========================================================== echo "" echo "[1/3] 打包 Pack1: 核心文件..." tar czf "$PACK_DIR/pack1_core.tar.gz" \ --exclude='__pycache__' \ --exclude='*.cache' \ Scripts/ \ Data/Detection_dataset/dataset.yaml \ Data/Detection_dataset/labels/ \ Data/Detection_dataset_dedup/dataset.yaml \ Data/Detection_dataset_nightaug/dataset.yaml \ logs/ \ docs/ \ Models/ \ Background/ \ Platform/ \ .claude/ \ need_review_images.txt \ 2>/dev/null echo " Pack1 基础文件打包完成" # 追加最佳权重 (每个实验只保留best.pt) echo " 添加最佳权重..." BEST_WEIGHTS="" for d in runs/detect/Detection_experiments/*/weights/best.pt; do if [ -f "$d" ]; then BEST_WEIGHTS="$BEST_WEIGHTS $d" fi done # 也加上last.pt以备resume for d in runs/detect/Detection_experiments/*/weights/last.pt; do if [ -f "$d" ]; then BEST_WEIGHTS="$BEST_WEIGHTS $d" fi done # 追加results.csv和args.yaml RESULTS_FILES="" for d in runs/detect/Detection_experiments/*/; do for f in results.csv args.yaml confusion_matrix.png results.png; do if [ -f "${d}${f}" ]; then RESULTS_FILES="$RESULTS_FILES ${d}${f}" fi done done # 追加预训练权重 PRETRAINED="yolo11s.pt yolo11m.pt yolo11l.pt yolo11n.pt yolov8s.pt rtdetr-l.pt yolo26n.pt" PRETRAINED_FILES="" for f in $PRETRAINED; do if [ -f "$f" ]; then PRETRAINED_FILES="$PRETRAINED_FILES $f" fi done tar rzf "$PACK_DIR/pack1_core.tar.gz" \ $BEST_WEIGHTS \ $RESULTS_FILES \ $PRETRAINED_FILES \ 2>/dev/null || true # 追加对话记录 echo " 添加对话记录..." CLAUDE_DIR="/home/user/.claude/projects/-home-user-work-lch-DairyGoat" if [ -d "$CLAUDE_DIR" ]; then tar rzf "$PACK_DIR/pack1_core.tar.gz" \ -C /home/user/.claude/projects \ "-home-user-work-lch-DairyGoat/" \ 2>/dev/null || true fi echo " Pack1 完成: $(du -sh $PACK_DIR/pack1_core.tar.gz | cut -f1)" # ========================================================== # Pack 2: 数据集图片 # ========================================================== echo "" echo "[2/3] 打包 Pack2: 数据集图片..." tar czf "$PACK_DIR/pack2_images.tar.gz" \ Data/Detection_dataset/images/ \ 2>/dev/null echo " Pack2 完成: $(du -sh $PACK_DIR/pack2_images.tar.gz | cut -f1)" # ========================================================== # Pack 3: 全部实验权重+曲线 (可选但建议) # ========================================================== echo "" echo "[3/3] 打包 Pack3: 全部实验权重..." # 排除最大的中间epoch权重,只保留best/last + 每10epoch一个 tar czf "$PACK_DIR/pack3_all_weights.tar.gz" \ runs/detect/Detection_experiments/*/weights/best.pt \ runs/detect/Detection_experiments/*/weights/last.pt \ runs/detect/Detection_experiments/*/results.csv \ runs/detect/Detection_experiments/*/args.yaml \ runs/detect/Detection_experiments/*/*.png \ 2>/dev/null || true echo " Pack3 完成: $(du -sh $PACK_DIR/pack3_all_weights.tar.gz | cut -f1)" # ========================================================== # 也单独打包可重建的数据集 # ========================================================== echo "" echo "[bonus] 打包去重/夜增强数据集标注..." tar czf "$PACK_DIR/pack_extra_datasets.tar.gz" \ Data/Detection_dataset_dedup/labels/ \ Data/Detection_dataset_dedup/images/train/ \ Data/Detection_dataset_dedup/dataset.yaml \ Data/Detection_dataset_nightaug/dataset.yaml \ Data/Detection_dataset/labels/train_backup_before_refine/ \ Data/Detection_dataset/labels/train_backup_before_refine_v2/ \ 2>/dev/null || true echo " Extra datasets 完成: $(du -sh $PACK_DIR/pack_extra_datasets.tar.gz | cut -f1)" # ========================================================== # 汇总 # ========================================================== echo "" echo "============================================" echo " 打包完成!文件位于: $PACK_DIR/" echo "============================================" echo "" ls -lh "$PACK_DIR/" echo "" du -sh "$PACK_DIR/" echo "" echo "迁移优先级:" echo " 1. pack1_core.tar.gz - [必须] 代码+标注+最佳权重+对话记录" echo " 2. pack2_images.tar.gz - [必须] 数据集原始图片" echo " 3. pack3_all_weights.tar.gz - [建议] 全部实验权重(可从best.pt重新推断)" echo " 4. pack_extra_datasets.tar.gz - [可选] 去重/增强数据集(可重新生成)"