美文网首页
简易同步开发服务器到测试服务器的脚本

简易同步开发服务器到测试服务器的脚本

作者: 雁过留声_泪落无痕 | 来源:发表于2025-08-13 10:56 被阅读0次
#!/bin/bash

# 定义目标服务器
TARGET_SERVER="192.168.xxx.xxx"
TARGET_USER="root"

# 定义要同步的文件或者目录
FROM_TO_FILES=(
  "/data/backend/expert/expert-admin.jar, /data/jars/expert/expert-admin.jar"
  "/data/backend/expert/application.yml, /data/jars/expert/conf/application.yml"
  "/data/backend/expert/application-local.yml, /data/jars/expert/conf/application-local.yml"

  "/data/frontend/expert, /data/html/expert"
  "/data/frontend/h5, /data/html/h5"
)

# 定义要执行的远程命令文件
COMMAND_FILE="/data/jars/expert/ry.sh"
# 定义远程命令文件的参数
COMMAND_ARGS="restart"

# 安装sshpass(如果未安装)
if ! command -v sshpass &> /dev/null; then
    echo "sshpass未安装!"
    exit 1
    # sudo apt-get install -y sshpass  # Debian/Ubuntu
    # 如果是CentOS/RHEL,使用以下命令:
    # sudo yum install -y sshpass
fi

# 提示用户输入密码
read -s -p "请输入B服务器的密码: " SERVER_PASSWORD
echo

# 遍历文件列表并执行同步,如果本地是目录则先删除远程目录
for FROM_TO in "${FROM_TO_FILES[@]}"; do
  IFS=',' read -r FROM TO <<< "$FROM_TO"
  FROM=$(echo "$FROM" | xargs)  # 去除前后空格
  TO=$(echo "$TO" | xargs)      # 去除前后空格
  if [[ -d "$FROM" ]]; then
    echo "同步目录:$FROM 到 $TARGET_USER@$TARGET_SERVER:$TO"
    sshpass -p ${SERVER_PASSWORD} ssh "$TARGET_USER@$TARGET_SERVER" "rm -rf $TO"
    sshpass -p ${SERVER_PASSWORD} scp -r "$FROM" "$TARGET_USER@$TARGET_SERVER:$TO"
  else
    echo "同步文件:$FROM 到 $TARGET_USER@$TARGET_SERVER:$TO"
    sshpass -p ${SERVER_PASSWORD} scp "$FROM" "$TARGET_USER@$TARGET_SERVER:$TO"
  fi
done

# 执行远程命令
sshpass -p ${SERVER_PASSWORD} ssh "$TARGET_USER@$TARGET_SERVER" "bash $COMMAND_FILE $COMMAND_ARGS"
# 检查命令执行结果
if [ $? -eq 0 ]; then
  echo "远程命令执行成功!"
else
  echo "远程命令执行失败!"
  exit 1
fi

# 提示用户操作完成
echo "所有文件同步和远程命令执行完成!"
echo "请检查目标服务器上的文件和服务状态。"

# 结束脚本
exit 0

相关文章

网友评论

      本文标题:简易同步开发服务器到测试服务器的脚本

      本文链接:https://www.haomeiwen.com/subject/bizbojtx.html