#!/bin/bash
# 此脚本用于同步另一台服务器上的前端静态资源
 
# 另一台服务器配置服务器
REMOTE_USER="user"
REMOTE_HOST="0.0.0.0"
REMOTE_PATH="/somedir/somedir"
# 设置SSH密钥的路径,用于scp免密码登录
# PS: 请提前执行命令生成并复制公钥到远端服务器:
#    ssh-keygen -t rsa -b 2048 -f ~/.ssh/fe_sync_rsa
#    ssh-copy-id -i ~/.ssh/fe_sync_rsa.pub user@0.0.0.0
SSH_KEY_PATH="$HOME/.ssh/fe_sync_rsa" 
 
# 确保新的SSH密钥权限设置正确
chmod 600 ${SSH_KEY_PATH}
# 本地路径
LOCAL_PATH=${REMOTE_PATH}
# 要同步的目录列表
DIRECTORIES=("dir1" "dir2")  # 你可以在这添加更多的目录
 
# 创建临时目录
TEMP_PATH="${LOCAL_PATH}/sync_temp"
mkdir -p ${TEMP_PATH}
 
# 循环处理每个目录
for DIR in "${DIRECTORIES[@]}"; do
    echo "正在处理目录 ${DIR}..."
 
    # 从远程服务器拉取目录到临时目录
    scp -i ${SSH_KEY_PATH} -r ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/${DIR} ${TEMP_PATH} > /dev/null
    if [ $? -eq 0 ]; then
        echo "成功从远程服务器传输目录 ${DIR} 到临时位置。"
    else
        echo "传输目录 ${DIR} 失败。" >&2
        exit 1
    fi
 
    # 删除本地目录
    rm -rf ${LOCAL_PATH}/${DIR}
    if [ $? -eq 0 ]; then
        echo "成功删除本地目录 ${DIR}。"
    else
        echo "删除本地目录 ${DIR} 失败。" >&2
        exit 1
    fi
 
    # 移动临时目录中的内容到目标位置
    mv ${TEMP_PATH}/${DIR} ${LOCAL_PATH}
    if [ $? -eq 0 ]; then
        echo "${DIR} 目录成功移动到目标位置。"
    else
        echo "移动 ${DIR} 目录失败。" >&2
        exit 1
    fi
done
 
# 删除临时目录
rm -rf ${TEMP_PATH}
 
echo "文件同步成功完成。"