#!/bin/bash
# 同步 /data/dbbak 到远程服务器 10.75.174.213:/data/club_dbbak
# 使用 rsync + sshpass 实现带密码的自动同步

REMOTE_HOST="10.75.174.213"
REMOTE_PORT="2222"
REMOTE_USER="root"
REMOTE_DIR="/data/club_dbbak"
LOCAL_DIR="/data/dbbak"

echo "========================================="
echo "开始同步: $LOCAL_DIR -> $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR"
echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
echo "========================================="

# 检查 sshpass 是否安装
if ! command -v sshpass &> /dev/null; then
    echo "正在安装 sshpass..."
    if command -v apt-get &> /dev/null; then
        apt-get update && apt-get install -y sshpass
    elif command -v yum &> /dev/null; then
        yum install -y sshpass
    elif command -v dnf &> /dev/null; then
        dnf install -y sshpass
    else
        echo "错误: 无法自动安装 sshpass,请手动安装后重试"
        exit 1
    fi
fi

# 使用 sshpass + rsync 同步
sshpass -p '远程服务器密码' rsync -avz --progress \
    -e "ssh -p $REMOTE_PORT -o StrictHostKeyChecking=no" \
    "$LOCAL_DIR/" \
    "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"

if [ $? -eq 0 ]; then
    echo "========================================="
    echo "同步完成! 时间: $(date '+%Y-%m-%d %H:%M:%S')"
    echo "========================================="
else
    echo "========================================="
    echo "同步失败! 请检查网络连接和认证信息"
    echo "========================================="
    exit 1
fi

发表评论