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,130 @@
#!/bin/bash
# Шаг 1 бэкапов: разметка 1 ТБ на /dev/sdb1, ФС ext4, монтирование в /mnt/backup, структура каталогов.
# Запускать на хосте Proxmox под root.
#
# Использование:
# ./backup-setup-sdb1-mount.sh --yes # разметить (если нужно), смонтировать, создать каталоги
# ./backup-setup-sdb1-mount.sh --structure-only # только fstab, mount и каталоги (раздел уже есть)
# ./backup-setup-sdb1-mount.sh # вывод действий без выполнения (без --yes)
#
set -e
BACKUP_MOUNT="/mnt/backup"
DEV_DISK="/dev/sdb"
DEV_PART="/dev/sdb1"
# 1 ТБ на диске 2 ТБ — первая половина
PART_END="50%"
if [ "$(id -u)" -ne 0 ]; then
echo "Запускайте под root."
exit 1
fi
if [ "$(uname -s)" != "Linux" ]; then
echo "Скрипт предназначен для запуска на хосте Proxmox (Linux)."
exit 1
fi
DO_IT=false
STRUCTURE_ONLY=false
for arg in "$@"; do
case "$arg" in
--yes) DO_IT=true ;;
--structure-only) STRUCTURE_ONLY=true ;;
esac
done
echo "=== Шаг 1: хранилище бэкапов (sdb1 → ${BACKUP_MOUNT}) ==="
echo ""
# Проверка наличия диска
if [ ! -b "$DEV_DISK" ]; then
echo "Ошибка: диск $DEV_DISK не найден."
exit 1
fi
# Проверка: раздел уже есть и примонтирован?
if mountpoint -q "$BACKUP_MOUNT" 2>/dev/null; then
echo "$BACKUP_MOUNT уже примонтирован. Создаём только структуру каталогов (если нет)."
DO_PART=false
DO_MOUNT=false
elif [ -b "$DEV_PART" ]; then
echo "Раздел $DEV_PART уже существует."
if [ "$STRUCTURE_ONLY" = true ]; then
DO_PART=false
DO_MOUNT=true
else
echo "Пропускаем разметку. Добавим fstab и монтирование."
DO_PART=false
DO_MOUNT=true
fi
else
DO_PART=true
DO_MOUNT=true
fi
# --- Разметка (при необходимости) ---
if [ "$DO_PART" = true ]; then
echo ""
echo "Будет выполнено:"
echo " 1. Создание GPT на $DEV_DISK"
echo " 2. Создание раздела $DEV_PART до $PART_END (1 ТБ)"
echo " 3. Создание ФС ext4 на $DEV_PART"
if [ "$DO_IT" != true ]; then
echo ""
echo "Для выполнения добавьте флаг: $0 --yes"
exit 0
fi
echo ""
parted -s "$DEV_DISK" mklabel gpt
parted -s "$DEV_DISK" mkpart primary ext4 0% "$PART_END"
partprobe "$DEV_DISK" || true
sleep 1
mkfs.ext4 -L backup "$DEV_PART"
echo "Разметка и ФС созданы."
fi
# --- Монтирование ---
mkdir -p "$BACKUP_MOUNT"
if [ "$DO_MOUNT" = true ] && ! mountpoint -q "$BACKUP_MOUNT" 2>/dev/null; then
UUID=$(blkid -s UUID -o value "$DEV_PART")
if [ -z "$UUID" ]; then
echo "Ошибка: не удалось получить UUID для $DEV_PART"
exit 1
fi
if ! grep -q "UUID=$UUID" /etc/fstab 2>/dev/null; then
if [ "$DO_IT" != true ] && [ "$STRUCTURE_ONLY" != true ]; then
echo ""
echo "Добавьте в /etc/fstab:"
echo " UUID=$UUID $BACKUP_MOUNT ext4 defaults,nofail 0 2"
echo ""
echo "Затем: mount $BACKUP_MOUNT"
echo "Для автоматического выполнения: $0 --yes или $0 --structure-only"
exit 0
fi
echo "UUID=$UUID $BACKUP_MOUNT ext4 defaults,nofail 0 2" >> /etc/fstab
echo "Добавлена запись в /etc/fstab."
fi
mount "$BACKUP_MOUNT"
echo "Смонтировано: $BACKUP_MOUNT"
fi
# --- Структура каталогов (всегда, если примонтировано) ---
if ! mountpoint -q "$BACKUP_MOUNT" 2>/dev/null; then
echo "Ошибка: $BACKUP_MOUNT не примонтирован. Сначала смонтируйте раздел."
exit 1
fi
mkdir -p "$BACKUP_MOUNT/proxmox/dump"
mkdir -p "$BACKUP_MOUNT/proxmox/etc-pve"
mkdir -p "$BACKUP_MOUNT/restic/local"
mkdir -p "$BACKUP_MOUNT/photos"
mkdir -p "$BACKUP_MOUNT/vps"
mkdir -p "$BACKUP_MOUNT/other"
echo ""
echo "Структура каталогов создана:"
ls -la "$BACKUP_MOUNT"
echo ""
echo "Готово. Точка монтирования: $BACKUP_MOUNT"