Files
HSAP/scripts/sync_to_server.sh

78 lines
2.2 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
# 同步 HSAP 工作区到训练服务器(展开软链)
#
# 用法:
# ./scripts/sync_to_server.sh USER@HOST:/opt/HSAP
# ./scripts/sync_to_server.sh USER@HOST:/opt/HSAP --code-only
# ./scripts/sync_to_server.sh USER@HOST:/opt/HSAP --dms-only
# ./scripts/sync_to_server.sh USER@HOST:/opt/HSAP --lane-only
set -euo pipefail
REMOTE="${1:?用法: $0 USER@HOST:/path/HSAP [--code-only|--dms-only|--lane-only]}"
shift
MODE="${1:-all}"
AS="$(cd "$(dirname "$0")/.." && pwd)"
DATA="$(cd "$AS/.." && pwd)"
WS="$DATA/workspace"
RSYNC=(rsync -avh --info=progress2 --copy-links)
EXCLUDE=(
--exclude 'vis_random_*'
--exclude 'archive/'
--exclude '__pycache__/'
--exclude '.git/'
--exclude 'runs/'
--exclude 'log/'
--exclude 'tmp/'
--exclude 'node_modules/'
)
echo "HSAP: $AS"
echo "实体 workspace: $WS"
echo "远程: $REMOTE"
mkdir_remote() {
ssh "${REMOTE%%:*}" "mkdir -p '${REMOTE#*:}'"
}
sync_as_meta() {
mkdir_remote
"${RSYNC[@]}" \
"$AS/as.py" \
"$AS/workflow.registry.yaml" \
"$AS/README.md" \
"$AS/requirements.txt" \
"${REMOTE}/"
[[ -d "$AS/scripts" ]] && "${RSYNC[@]}" "$AS/scripts/" "${REMOTE}/scripts/"
[[ -d "$AS/platform/as_platform" ]] && "${RSYNC[@]}" "$AS/platform/as_platform/" "${REMOTE}/platform/as_platform/"
[[ -d "$AS/algorithms" ]] && "${RSYNC[@]}" --exclude 'code' "$AS/algorithms/" "${REMOTE}/algorithms/"
[[ -f "$AS/algorithms/registry.yaml" ]] && "${RSYNC[@]}" "$AS/algorithms/registry.yaml" "${REMOTE}/algorithms/"
}
sync_dms_code() {
"${RSYNC[@]}" "${EXCLUDE[@]}" "$WS/DMS/Code/" "${REMOTE}/algorithms/dms_yolo/code/"
}
sync_dms_data() {
"${RSYNC[@]}" "${EXCLUDE[@]}" "$WS/DMS/DATASET/" "${REMOTE}/datasets/dms/"
}
sync_lane_data() {
"${RSYNC[@]}" "${EXCLUDE[@]}" "$WS/lane/" "${REMOTE}/datasets/lane/"
}
sync_lane_code() {
"${RSYNC[@]}" "${EXCLUDE[@]}" "$WS/LaneDection/Code/" "${REMOTE}/algorithms/lane_ufld/code/"
}
case "$MODE" in
--code-only) sync_as_meta; sync_dms_code; sync_lane_code ;;
--dms-only) sync_as_meta; sync_dms_code; sync_dms_data ;;
--lane-only) sync_as_meta; sync_lane_data; sync_lane_code ;;
*) sync_as_meta; sync_dms_code; sync_dms_data; sync_lane_data; sync_lane_code ;;
esac
echo "完成: cd ${REMOTE#*:} && python as.py status"