#!/usr/bin/env bash # 仅上传服务端所需文件,跳过文档和客户端配置 set -euo pipefail VPS_IP="${1:-}" SSH_PORT="${2:-22}" if [[ -z "$VPS_IP" ]]; then echo "用法: bash upload.sh [SSH_PORT]" echo "示例: bash upload.sh 1.2.3.4 # 使用默认端口 22" echo "示例: bash upload.sh 1.2.3.4 2222 # 使用自定义端口 2222" exit 1 fi if ! [[ "$SSH_PORT" =~ ^[0-9]+$ ]] || (( SSH_PORT < 1 || SSH_PORT > 65535 )); then echo "错误: 端口必须是 1-65535 之间的数字,当前为 '${SSH_PORT}'" exit 1 fi REMOTE_DIR="/opt/vps-xray" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" echo ">>> 创建远程目录 ${REMOTE_DIR} (端口 ${SSH_PORT})" ssh -p "${SSH_PORT}" "root@${VPS_IP}" "mkdir -p ${REMOTE_DIR}" echo ">>> 上传部署文件" scp -P "${SSH_PORT}" \ "${SCRIPT_DIR}/deploy.sh" \ "${SCRIPT_DIR}/uninstall.sh" \ "${SCRIPT_DIR}/backup.sh" \ "${SCRIPT_DIR}/.env.example" \ "root@${VPS_IP}:${REMOTE_DIR}/" echo "" echo "上传完成,文件位于 root@${VPS_IP}:${REMOTE_DIR}" echo "" echo "下一步:" if [[ "$SSH_PORT" == "22" ]]; then echo " ssh root@${VPS_IP}" else echo " ssh -p ${SSH_PORT} root@${VPS_IP}" fi echo " cd ${REMOTE_DIR} && bash deploy.sh"