vps部署优化
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# ============================================
|
||||
# Xray 备份脚本
|
||||
# 备份 Xray 配置 / 部署配置 / 网络调优参数
|
||||
# 输出目录默认 /var/backups/xray,自动清理 30 天前的旧备份
|
||||
# ============================================
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
RED='\033[0;31m'
|
||||
NC='\033[0m'
|
||||
|
||||
log() { echo -e "${GREEN}[INFO]${NC} $*"; }
|
||||
warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
|
||||
error() { echo -e "${RED}[ERROR]${NC} $*" >&2; }
|
||||
|
||||
if [ "$(id -u)" -ne 0 ]; then
|
||||
error "请使用 root 用户运行: sudo bash backup.sh"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f .env ]; then
|
||||
sed -i 's/\r$//' .env
|
||||
set -a; source .env; set +a
|
||||
fi
|
||||
|
||||
BACKUP_DIR="${BACKUP_DIR:-/var/backups/xray}"
|
||||
KEEP_DAYS="${BACKUP_KEEP_DAYS:-30}"
|
||||
STAMP="$(date '+%Y%m%d%H%M%S')"
|
||||
|
||||
mkdir -p "$BACKUP_DIR"
|
||||
chmod 700 "$BACKUP_DIR"
|
||||
|
||||
backed_up=0
|
||||
|
||||
# ===== 1. Xray 配置 =====
|
||||
# 打包 /usr/local/etc/xray 整个目录,恢复时 tar xzf ... -C /usr/local/etc/
|
||||
if [ -d /usr/local/etc/xray ]; then
|
||||
tar czf "${BACKUP_DIR}/xray_config_${STAMP}.tar.gz" -C /usr/local/etc xray
|
||||
log "Xray 配置已备份: ${BACKUP_DIR}/xray_config_${STAMP}.tar.gz"
|
||||
backed_up=$((backed_up + 1))
|
||||
else
|
||||
warn "/usr/local/etc/xray 不存在,跳过"
|
||||
fi
|
||||
|
||||
# ===== 2. 部署配置(.env + 脚本)=====
|
||||
# .env 含私钥,打包后权限收紧到 600
|
||||
deploy_files=()
|
||||
for f in .env deploy.sh uninstall.sh backup.sh upload.sh .env.example; do
|
||||
[ -f "$f" ] && deploy_files+=("$f")
|
||||
done
|
||||
if [ "${#deploy_files[@]}" -gt 0 ]; then
|
||||
tar czf "${BACKUP_DIR}/deploy_${STAMP}.tar.gz" -C "$SCRIPT_DIR" "${deploy_files[@]}"
|
||||
chmod 600 "${BACKUP_DIR}/deploy_${STAMP}.tar.gz"
|
||||
log "部署配置已备份: ${BACKUP_DIR}/deploy_${STAMP}.tar.gz(权限 600,含私钥)"
|
||||
backed_up=$((backed_up + 1))
|
||||
else
|
||||
warn "未找到可备份的部署文件,跳过"
|
||||
fi
|
||||
|
||||
# ===== 3. 网络调优参数 =====
|
||||
if [ -f /etc/sysctl.d/99-xray-turbo.conf ]; then
|
||||
cp /etc/sysctl.d/99-xray-turbo.conf "${BACKUP_DIR}/sysctl_${STAMP}.conf"
|
||||
log "网络调优参数已备份: ${BACKUP_DIR}/sysctl_${STAMP}.conf"
|
||||
backed_up=$((backed_up + 1))
|
||||
else
|
||||
warn "/etc/sysctl.d/99-xray-turbo.conf 不存在,跳过"
|
||||
fi
|
||||
|
||||
if [ "$backed_up" -eq 0 ]; then
|
||||
error "没有任何内容被备份,请确认 Xray 是否已部署"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# ===== 4. 清理过期备份 =====
|
||||
old_count=$(find "$BACKUP_DIR" -maxdepth 1 -type f \
|
||||
\( -name 'xray_config_*.tar.gz' -o -name 'deploy_*.tar.gz' -o -name 'sysctl_*.conf' \) \
|
||||
-mtime "+${KEEP_DAYS}" | wc -l)
|
||||
if [ "$old_count" -gt 0 ]; then
|
||||
find "$BACKUP_DIR" -maxdepth 1 -type f \
|
||||
\( -name 'xray_config_*.tar.gz' -o -name 'deploy_*.tar.gz' -o -name 'sysctl_*.conf' \) \
|
||||
-mtime "+${KEEP_DAYS}" -delete
|
||||
log "已清理 ${old_count} 个超过 ${KEEP_DAYS} 天的旧备份"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
log "备份完成,目录: ${BACKUP_DIR}"
|
||||
ls -lh "$BACKUP_DIR" | tail -n +2 | tail -10
|
||||
Reference in New Issue
Block a user