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:
73
scripts/backup-vps-miran.sh
Normal file
73
scripts/backup-vps-miran.sh
Normal 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
|
||||
Reference in New Issue
Block a user