| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #!/bin/bash
- # 定义远程节点列表
- nodes=("node02" "node01" "node03")
- # 定义本地和远程目录
- local_dir="$HOME/yuzhou/jiangcang_vj/"
- remote_dir="~/yuzhou/jiangcang_vj"
- echo "=== 清理本地日志文件 ==="
- rm -f "$local_dir/output.log" "$local_dir/nohup.out"
- echo "=== 远端目录初始化 ==="
- for node in "${nodes[@]}"; do
- echo "初始化 $node 的目录结构..."
- ssh "$node@$node" "
- set -e
- mkdir -p \
- $remote_dir \
- $remote_dir/data_shards \
- $remote_dir/photo
- "
- echo "✅ $node 目录就绪"
- done
- echo "=== 开始同步文件到远程节点 ==="
- # 遍历远程节点并同步文件
- for node in "${nodes[@]}"; do
- echo "正在同步到 $node..."
-
- # 只同步当前目录文件, 不同步任何子目录
- rsync -avz \
- --files-from=<(find "$local_dir" -maxdepth 1 -type f -printf "%f\n") \
- "$local_dir" "$node@$node:$remote_dir/"
-
- if [ $? -ne 0 ]; then
- echo "⚠️ 警告: 同步到 $node 失败,跳过该节点。"
- continue # 继续同步下一个节点
- fi
- echo "✅ 同步到 $node 完成。"
- done
- echo -e "\n\n"
- echo "=== 开始在远程节点上执行对应的 start_nodeXX.sh ==="
- # nohup setsid ./$script_name > ~/yuzhou/jiangcang_vj/nohup_$node.log 2>&1 &
- # 在远程节点执行 `start_nodeXX.sh`
- for node in "${nodes[@]}"; do
- script_name="start_${node}.sh"
- echo "正在执行 $node 上的 $script_name..."
- # 修改后的执行命令,捕获所有输出信息
- ssh "$node@$node" "
- cd $remote_dir && chmod +x $script_name;
- ./$script_name
- "
- if [ $? -ne 0 ]; then
- echo "⚠️ 警告: 在 $node 上执行 $script_name 失败,跳过该节点。"
- continue # 继续执行下一个节点
- fi
- echo "✅ 在 $node 上成功执行 $script_name。"
- done
- echo -e "\n\n"
- echo "=== 在本地执行 start_node04.sh ==="
- # 在本地执行 `start_node04.sh`
- cd "$local_dir"
- chmod +x start_node04.sh && ./start_node04.sh
- if [ $? -ne 0 ]; then
- echo "❌ 错误: 本地执行 start_node04.sh 失败,请检查问题!"
- exit 1
- fi
- echo "🎉 所有任务执行完毕!"
- echo -e "\n\n"
|