Update backup and logging documentation for Proxmox and containers. Adjust retention policies for Yandex Object Storage and enhance log rotation settings across various containers. Include detailed instructions for VPS backup processes and configurations for AmneziaVPN.

This commit is contained in:
2026-02-26 20:14:30 +03:00
parent cf212cefc5
commit feaa31f702
36 changed files with 1272 additions and 41 deletions

View File

@@ -0,0 +1,73 @@
#!/bin/bash
# Бэкап VPS Миран (telegram-helper-bot): БД, voice_users и контент из S3 (Miran).
# Запускать на хосте Proxmox под root.
# Требуется: SSH без пароля с хоста к deploy@185.147.80.190 -p 15722 (ключ в ~/.ssh).
# Для S3: установить aws cli и задать креды в /root/.vps-miran-s3.env (см. ниже).
# Результат: /mnt/backup/vps/miran/{db,voice_users,s3}.
set -e
VPS_HOST="185.147.80.190"
VPS_USER="deploy"
VPS_PORT="15722"
VPS_SSH="${VPS_USER}@${VPS_HOST}"
SSH_OPTS=(-o ConnectTimeout=15 -o BatchMode=yes -p "$VPS_PORT")
RSYNC_SSH="ssh -p $VPS_PORT"
REMOTE_DB="/home/prod/bots/telegram-helper-bot/database/tg-bot-database.db"
REMOTE_VOICE="/home/prod/bots/telegram-helper-bot/voice_users"
BACKUP_ROOT="/mnt/backup/vps/miran"
RETENTION_DAYS=14
# S3 (опционально): задать в /root/.vps-miran-s3.env:
# S3_ACCESS_KEY=...
# S3_SECRET_KEY=...
# S3_BUCKET_NAME=telegram-helper-bot
S3_ENV="/root/.vps-miran-s3.env"
S3_ENDPOINT="https://api.s3.miran.ru"
if [ "$(id -u)" -ne 0 ]; then
echo "Запускайте под root."
exit 1
fi
mkdir -p "$BACKUP_ROOT/db" "$BACKUP_ROOT/voice_users" "$BACKUP_ROOT/s3"
# ---- 1) Копирование БД с VPS ----
DATE=$(date +%Y%m%d)
DB_DEST="$BACKUP_ROOT/db/tg-bot-database-$DATE.db"
if rsync -az -e "$RSYNC_SSH" --timeout=60 "${VPS_SSH}:${REMOTE_DB}" "$DB_DEST" 2>/dev/null; then
echo "БД скопирована: $DB_DEST ($(du -h "$DB_DEST" | cut -f1))"
else
echo "Предупреждение: не удалось скопировать БД с VPS (проверьте SSH и путь)."
fi
find "$BACKUP_ROOT/db" -name 'tg-bot-database-*.db' -mtime +$RETENTION_DAYS -delete
# ---- 2) Копирование voice_users с VPS ----
if rsync -az -e "$RSYNC_SSH" --timeout=600 "${VPS_SSH}:${REMOTE_VOICE}/" "$BACKUP_ROOT/voice_users/" 2>/dev/null; then
echo "voice_users обновлён: $BACKUP_ROOT/voice_users/"
else
echo "Предупреждение: не удалось скопировать voice_users с VPS."
fi
# ---- 3) Выгрузка S3 (Miran) в локальную копию ----
if [ -f "$S3_ENV" ]; then
# shellcheck source=/dev/null
source "$S3_ENV"
if [ -n "$S3_ACCESS_KEY" ] && [ -n "$S3_SECRET_KEY" ] && [ -n "$S3_BUCKET_NAME" ]; then
if command -v aws >/dev/null 2>&1; then
export AWS_ACCESS_KEY_ID="$S3_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="$S3_SECRET_KEY"
if aws s3 sync "s3://${S3_BUCKET_NAME}" "$BACKUP_ROOT/s3/" --endpoint-url "$S3_ENDPOINT" --no-progress 2>/dev/null; then
echo "S3 синхронизирован: $BACKUP_ROOT/s3/"
else
echo "Предупреждение: aws s3 sync завершился с ошибкой."
fi
else
echo "Предупреждение: aws cli не установлен — S3 не бэкапится. Установите: apt install awscli."
fi
else
echo "Предупреждение: в $S3_ENV заданы не все переменные (S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET_NAME)."
fi
else
echo "Подсказка: для бэкапа S3 создайте $S3_ENV с S3_ACCESS_KEY, S3_SECRET_KEY, S3_BUCKET_NAME."
fi