#!/bin/bash # 配置参数 LOCAL_DIR="/Users/aiotagro/vue/niumall/website" REMOTE_USER="root" REMOTE_HOST="49.51.70.206" REMOTE_DIR="/data/website/niumall" REMOTE_PASSWORD="Aiotjkl$758adfa@" # 检查本地目录是否存在 if [ ! -d "$LOCAL_DIR" ]; then echo "错误:本地目录 $LOCAL_DIR 不存在!" exit 1 fi # 使用标准 rsync 命令(需要手动输入密码) echo "开始上传文件到远程服务器..." echo "注意:请在提示时手动输入远程服务器密码:$REMOTE_PASSWORD" echo "\n正在连接到 $REMOTE_USER@$REMOTE_HOST..." # 使用基本的rsync命令,让用户手动输入密码 rsync -avz --progress --delete "$LOCAL_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/" if [ $? -eq 0 ]; then echo "上传完成!" echo "\n=======================================" echo "提示:为了避免每次输入密码,建议设置SSH密钥认证" echo "=======================================" echo "\n完整的SSH密钥配置步骤:" echo "\n1. 生成SSH密钥对(按提示操作,默认选项即可):" echo " ssh-keygen -t rsa -b 4096" echo "\n2. 生成完成后,将公钥复制到远程服务器:" echo " ssh-copy-id -i ~/.ssh/id_rsa.pub $REMOTE_USER@$REMOTE_HOST" echo " (如果提示'No identities found',请使用上面的完整命令)" echo "\n3. 测试免密码登录:" echo " ssh $REMOTE_USER@$REMOTE_HOST" echo "\n配置完成后,后续运行此脚本将不再需要输入密码!" else echo "上传失败!请检查网络连接、服务器配置和密码是否正确。" echo "\n可能的解决方案:" echo "1. 确保远程服务器IP地址正确:$REMOTE_HOST" echo "2. 手动创建远程目录(如果不存在):" echo " ssh $REMOTE_USER@$REMOTE_HOST 'mkdir -p $REMOTE_DIR'" echo "3. 确保root用户有权限访问该目录" echo "4. 检查防火墙设置,确保SSH端口(22)已开放" exit 1 fi