#!/bin/bash
# ============================================================
# Скрипт 09: Backup-сервер (приём бэкапов)
# Server 192.168.0.150
# ============================================================
set -e
echo "▶️ 09. Backup (приём)..."
echo ""
# ─── 1. Создаём директорию /backup ────────────────────────
echo "📁 Создание /backup..."
sudo mkdir -p /backup/server /backup/serverai
sudo chown -R stas:stas /backup
sudo chmod 755 /backup
# ─── 2. Проверяем размер ──────────────────────────────────
echo ""
echo "💾 Свободно на /backup:"
df -h /backup | tail -1
echo ""
# ─── 3. Скрипт ротации ────────────────────────────────────
echo "📝 Создание скрипта ротации..."
cat > ~/kspai_project/scripts/rotate_backups.sh << 'ROTATE_EOF'
#!/bin/bash
# Ротация: удаляем бэкапы старше 3 дней
echo "🔄 Ротация бэкапов $(date '+%Y-%m-%d %H:%M')"
# Бэкапы serverai
find /backup/serverai -type f -mtime +3 -delete 2>/dev/null
count_serverai=$(find /backup/serverai -type f | wc -l)
echo " serverai: $count_serverai файлов"
# Бэкапы server
find /backup/server -type f -mtime +3 -delete 2>/dev/null
count_server=$(find /backup/server -type f | wc -l)
echo " server: $count_server файлов"
# Размер
du -sh /backup/serverai /backup/server 2>/dev/null
ROTATE_EOF
chmod +x ~/kspai_project/scripts/rotate_backups.sh
# ─── 4. Скрипт приёма ─────────────────────────────────────
echo "📝 Создание скрипта приёма..."
cat > ~/kspai_project/scripts/receive_backup.sh << 'RECV_EOF'
#!/bin/bash
# Приём бэкапа (используется в rsync-сессии)
# Ничего не делает — rsync сам копирует
echo "✅ Backup received: $(date)"
RECV_EOF
chmod +x ~/kspai_project/scripts/receive_backup.sh
# ─── 5. Cron для ротации ──────────────────────────────────
echo "⏰ Настройка cron..."
CRON_JOB="0 4 * * * /home/stas/kspai_project/scripts/rotate_backups.sh >> /var/log/backup_rotation.log 2>&1"
# Добавляем, если нет
if ! crontab -l 2>/dev/null | grep -q "rotate_backups"; then
(crontab -l 2>/dev/null; echo "$CRON_JOB") | crontab -
echo " ✅ Добавлено в crontab"
else
echo " ℹ️ Уже есть в crontab"
fi
# ─── 6. Проверка ──────────────────────────────────────────
echo ""
echo "🔍 Проверка:"
ls -la /backup/
echo ""
crontab -l | grep rotate_backups || echo " cron не настроен"
echo ""
echo "✅ 09_server_backup.sh завершён"
echo ""
echo "📁 Бэкапы будут приниматься в /backup/serverai и /backup/server"
echo "🔄 Ротация: ежедневно в 4:00, хранится 3 дня"