# Git Backup System для CRM ## Обзор Система автоматического бэкапа Git репозитория CRM проекта с возможностью загрузки на S3. ## Файлы - `backup_to_s3.sh` - Основной скрипт бэкапа с загрузкой на S3 - `daily_backup.sh` - Простой ежедневный бэкап - `.gitignore` - Исключения для Git - `backups/` - Папка для локальных бэкапов ## Использование ### Ручной бэкап ```bash # Создать бэкап с описанием ./backup_to_s3.sh "Описание изменений" # Создать бэкап с автоматическим описанием ./backup_to_s3.sh ``` ### Автоматический ежедневный бэкап ```bash # Добавить в crontab для ежедневного бэкапа в 2:00 crontab -e # Добавить строку: 0 2 * * * /var/www/fastuser/data/www/crm.clientright.ru/daily_backup.sh ``` ## Настройка S3 ### 1. Установка AWS CLI ```bash # Ubuntu/Debian sudo apt install awscli # Или через pip pip install awscli ``` ### 2. Настройка credentials ```bash aws configure # Ввести: # AWS Access Key ID: [ваш ключ] # AWS Secret Access Key: [ваш секрет] # Default region name: ru-central1 # Default output format: json ``` ### 3. Создание S3 bucket ```bash aws s3 mb s3://crm-backups --region ru-central1 ``` ## Структура бэкапов ### Git коммиты - Каждый бэкап создает коммит с временной меткой - История изменений сохраняется в Git ### Архивы - Формат: `crm_backup_YYYYMMDD_HHMMSS.tar.gz` - Исключения: `.git`, `cache`, `logs`, `test` - Размер: обычно 50-100MB ### S3 структура ``` s3://crm-backups/ ├── crm-git-backup/ │ ├── crm_backup_20240926_104500.tar.gz │ ├── crm_backup_20240926_120000.tar.gz │ └── ... ``` ## Восстановление ### Из Git ```bash # Посмотреть историю git log --oneline # Откатиться к предыдущей версии git reset --hard HEAD~1 # Откатиться к конкретному коммиту git reset --hard ``` ### Из архива ```bash # Скачать с S3 aws s3 cp s3://crm-backups/crm-git-backup/crm_backup_20240926_104500.tar.gz . # Распаковать tar -xzf crm_backup_20240926_104500.tar.gz ``` ## Мониторинг ### Проверка статуса ```bash # Статус Git git status # Последние коммиты git log --oneline -10 # Размер репозитория du -sh .git ``` ### Логи ```bash # Логи ежедневного бэкапа tail -f /var/log/cron # Или добавить логирование в скрипт ./daily_backup.sh >> /var/log/crm_backup.log 2>&1 ``` ## Безопасность ### Исключенные файлы - `config.inc.php` - конфигурация БД - `.env` - переменные окружения - `cache/` - кеш файлы - `logs/` - логи - `*.log` - все лог файлы ### Рекомендации 1. Регулярно проверяйте размер бэкапов 2. Настройте lifecycle policy для S3 3. Используйте разные bucket для разных окружений 4. Шифруйте sensitive данные ## Troubleshooting ### Проблема: "Permission denied" ```bash sudo chown -R www-data:www-data . sudo chmod -R 755 . ``` ### Проблема: "AWS CLI not found" ```bash # Установить AWS CLI curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip sudo ./aws/install ``` ### Проблема: "Bucket does not exist" ```bash # Создать bucket aws s3 mb s3://crm-backups --region ru-central1 ``` ## Контакты При проблемах обращайтесь к Фёдору.