Files
HM-RunningHub-ComfyUI_RH_He…/sync.sh
T
wenjian 872011d8f1 Add ComfyUI node integration and fix compatibility issues
- Add ComfyUI custom nodes: model loader, t2v, i2v, v2v
- Fix kernels import: move to try block for graceful fallback when not installed
- Fix diffusers compatibility: add fallback imports for HeliosLoraLoaderMixin,
  HeliosTransformer3DModel, HeliosScheduler, and apply_lora_scale
- Fix infer_helios: cast num_blocks_per_group to int, add low_cpu_mem_usage
- Add rh_config.json, model index compat, and deployment scripts

Made-with: Cursor
2026-03-10 04:49:22 +08:00

155 lines
4.6 KiB
Bash

#!/bin/bash
# 配置变量
NODE_NAME=$(basename "$PWD")
REMOTE_HOST="root@10.132.208.7"
DOCKER_CONTAINER="RunningHub"
DOCKER_PATH="/workspace/ComfyUI/custom_nodes/${NODE_NAME}/"
# 使用固定的远程同步目录,保持 rsync 状态
REMOTE_SYNC_DIR="/root/${NODE_NAME}"
echo "开始增量同步到Docker容器..."
# 自动生成 cptorh01.sh 脚本
echo "正在生成 cptorh01.sh 脚本..."
cat > cptorh01.sh << 'EOF'
#!/bin/bash
# 创建目标目录
mkdir -p /root/custom_nodes
# 简化的mount命令
mount -t nfs4 -o rw rh-nfs.runninghub.cn:/data/rh_storage/global/custom_nodes_rel /root/custom_nodes
# 获取当前目录名作为NODE_NAME
NODE_NAME=$(basename "$PWD")
# 创建目标目录
mkdir -p /root/custom_nodes/${NODE_NAME}
# 显示将要执行的rsync命令
echo "准备执行以下rsync命令:"
echo "rsync -av --include=\"*/\" --include=\"*.py\" --exclude=\"*\" ./ /root/custom_nodes/${NODE_NAME}/"
echo ""
echo "此命令将同步当前目录及子目录中的所有 .py 文件到 /root/custom_nodes/${NODE_NAME}/"
echo ""
read -p "是否继续执行?(输入 Y 确认): " -n 1 -r
echo ""
if [[ $REPLY =~ ^[Yy]$ ]]; then
echo "开始同步 Python 文件..."
rsync -av --include="*/" --include="*.py" --exclude="*" ./ /root/custom_nodes/${NODE_NAME}/
if [ $? -eq 0 ]; then
echo "Python 文件同步完成!"
else
echo "Python 文件同步失败!"
exit 1
fi
else
echo "取消同步操作。"
exit 1
fi
EOF
# 给 cptorh01.sh 添加执行权限
chmod +x cptorh01.sh
echo "cptorh01.sh 脚本生成完成!"
# 检查本地是否安装了rsync
if ! command -v rsync &> /dev/null; then
echo "错误:本地未安装 rsync,请先安装: apt-get install rsync 或 yum install rsync"
exit 1
fi
# 检查远程连接和Docker容器
echo "检查远程连接和Docker容器..."
ssh ${REMOTE_HOST} "docker ps | grep ${DOCKER_CONTAINER}" > /dev/null
if [ $? -ne 0 ]; then
echo "Docker容器 ${DOCKER_CONTAINER} 未运行!"
exit 1
fi
# 检查远程是否安装了rsync
echo "检查远程rsync..."
ssh ${REMOTE_HOST} "which rsync" > /dev/null
if [ $? -ne 0 ]; then
echo "错误:远程主机未安装 rsync,请在远程主机安装: apt-get install rsync 或 yum install rsync"
exit 1
fi
# 确保Docker容器内目标目录存在
echo "确保Docker容器内目标目录存在..."
ssh ${REMOTE_HOST} "docker exec ${DOCKER_CONTAINER} mkdir -p ${DOCKER_PATH}"
if [ $? -ne 0 ]; then
echo "无法在Docker容器内创建目录!"
exit 1
fi
# 确保远程同步目录存在
echo "确保远程同步目录存在..."
ssh ${REMOTE_HOST} "mkdir -p ${REMOTE_SYNC_DIR}"
# 定义要排除的文件和目录
EXCLUDE_PATTERNS=(
"--exclude=.git"
"--exclude=__pycache__"
"--exclude=*.pyc"
"--exclude=*.pyo"
"--exclude=.DS_Store"
"--exclude=Thumbs.db"
"--exclude=*.tmp"
"--exclude=*.swp"
"--exclude=.vscode"
"--exclude=.idea"
"--exclude=*.log"
"--exclude=weights/"
"--exclude=save_audio/"
)
# 使用rsync进行增量同步到远程固定目录
echo "开始增量同步文件..."
echo "正在比较文件差异,只传输变化的文件..."
rsync -avz --progress --delete \
"${EXCLUDE_PATTERNS[@]}" \
--rsync-path="rsync" \
./ ${REMOTE_HOST}:${REMOTE_SYNC_DIR}/
if [ $? -eq 0 ]; then
echo "增量同步到远程主机完成,正在同步到Docker容器..."
# 直接从远程同步目录同步到Docker容器,保持文件权限
ssh ${REMOTE_HOST} "cd ${REMOTE_SYNC_DIR} && tar -cpf - . | docker exec -i ${DOCKER_CONTAINER} tar -xpf - -C ${DOCKER_PATH}"
if [ $? -eq 0 ]; then
echo "增量同步完成!只传输了变化的文件。"
echo "提示:下次同步将更快,因为只会传输修改过的文件。"
echo "远程同步目录:${REMOTE_SYNC_DIR}"
# 修改文件权限为644
echo "正在修改文件权限为644..."
ssh ${REMOTE_HOST} "docker exec ${DOCKER_CONTAINER} find ${DOCKER_PATH} -type f -exec chmod 644 {} \;"
if [ $? -eq 0 ]; then
echo "文件权限修改完成!"
else
echo "文件权限修改失败,请手动检查!"
fi
# 重启ComfyUI服务
echo "正在重启ComfyUI服务..."
ssh ${REMOTE_HOST} "pkill -9 -f 'python main.py'"
if [ $? -eq 0 ]; then
echo "ComfyUI服务已重启!"
else
echo "重启ComfyUI服务失败,请手动检查!"
fi
else
echo "同步到Docker容器失败!"
exit 1
fi
else
echo "增量同步失败!"
exit 1
fi