56 lines
1.1 KiB
Bash
Executable File
56 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
KEY="$HOME/.ssh/aws_eafon.pem"
|
||
REMOTE_DIR="/data/project/app-api/"
|
||
|
||
SERVER="api1"
|
||
if [ $# -gt 0 ] && { [ "$1" = "api1" ] || [ "$1" = "api2" ]; }; then
|
||
SERVER="$1"
|
||
shift
|
||
fi
|
||
|
||
case "$SERVER" in
|
||
api1)
|
||
REMOTE_HOST="ubuntu@ec2-18-184-205-87.eu-central-1.compute.amazonaws.com"
|
||
;;
|
||
api2)
|
||
REMOTE_HOST="ubuntu@ec2-3-71-153-45.eu-central-1.compute.amazonaws.com"
|
||
;;
|
||
*)
|
||
echo "未知服务器: $SERVER(可选: api1, api2)" >&2
|
||
exit 1
|
||
;;
|
||
esac
|
||
|
||
REMOTE="${REMOTE_HOST}:${REMOTE_DIR}"
|
||
|
||
if [ $# -eq 0 ]; then
|
||
PATHS=(
|
||
./cmd/
|
||
./internal/
|
||
./pkg
|
||
./go.mod
|
||
./go.sum
|
||
./Dockerfile
|
||
./docker-compose.yml
|
||
)
|
||
else
|
||
PATHS=("$@")
|
||
fi
|
||
|
||
echo "上传到 ${SERVER} (${REMOTE_HOST}) ..."
|
||
|
||
SSH_OPTS="-i $KEY -o StrictHostKeyChecking=no"
|
||
|
||
# 上传前先删除远程同名目录,避免 scp 嵌套
|
||
for item in "${PATHS[@]}"; do
|
||
if [[ -d "$item" ]]; then
|
||
remote_item="${REMOTE_DIR}${item#./}"
|
||
echo " 删除远程目录: ${REMOTE_HOST}:${remote_item}"
|
||
ssh $SSH_OPTS "$REMOTE_HOST" "rm -rf '${remote_item}'"
|
||
fi
|
||
done
|
||
|
||
scp -i "$KEY" -r "${PATHS[@]}" "$REMOTE"
|