Add Git backup system with S3 integration

- backup_to_s3.sh: Main backup script with S3 upload
- daily_backup.sh: Simple daily backup script
- README_GIT.md: Complete documentation
- .gitignore: Exclude sensitive files and cache
This commit is contained in:
Fedor
2025-09-26 10:46:34 +03:00
parent cf520a7db5
commit b162eddf0a
3 changed files with 271 additions and 0 deletions

165
README_GIT.md Normal file
View File

@@ -0,0 +1,165 @@
# 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 <commit-hash>
```
### Из архива
```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
```
## Контакты
При проблемах обращайтесь к Фёдору.