#!/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 "文件同步成功完成。"