78 lines
2.2 KiB
Bash
78 lines
2.2 KiB
Bash
|
|
#!/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"
|