|
@@ -0,0 +1,85 @@
|
|
|
|
|
+#!/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"
|
|
|
|
|
+
|