Files
crm.clientright.ru/backup_to_s3.sh

76 lines
2.7 KiB
Bash
Raw Normal View History

#!/bin/bash
# Скрипт для бэкапа Git репозитория на S3
# Использование: ./backup_to_s3.sh [описание_изменений]
# Настройки
2025-09-26 10:50:20 +03:00
BUCKET_NAME="crm-git-backups"
BACKUP_PREFIX="crm-git-backup"
2025-09-26 10:50:20 +03:00
S3_ENDPOINT="https://s3.timeweb.cloud"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
COMMIT_MESSAGE=${1:-"Auto backup $(date '+%Y-%m-%d %H:%M:%S')"}
# Цвета для вывода
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
echo -e "${GREEN}=== CRM Git Backup to S3 ===${NC}"
# Проверяем, что мы в Git репозитории
if [ ! -d ".git" ]; then
echo -e "${RED}Ошибка: Не найден Git репозиторий${NC}"
exit 1
fi
# Проверяем наличие изменений
if git diff --quiet && git diff --cached --quiet; then
echo -e "${YELLOW}Нет изменений для коммита${NC}"
exit 0
fi
# Добавляем все изменения
echo -e "${YELLOW}Добавляем изменения в Git...${NC}"
git add .
# Создаем коммит
echo -e "${YELLOW}Создаем коммит: $COMMIT_MESSAGE${NC}"
git commit -m "$COMMIT_MESSAGE"
# Создаем архив репозитория
ARCHIVE_NAME="crm_backup_${TIMESTAMP}.tar.gz"
echo -e "${YELLOW}Создаем архив: $ARCHIVE_NAME${NC}"
# Исключаем .git из архива для экономии места
tar --exclude='.git' --exclude='cache' --exclude='logs' --exclude='test' \
-czf "/tmp/$ARCHIVE_NAME" .
# Проверяем размер архива
ARCHIVE_SIZE=$(du -h "/tmp/$ARCHIVE_NAME" | cut -f1)
echo -e "${GREEN}Архив создан: $ARCHIVE_NAME (размер: $ARCHIVE_SIZE)${NC}"
# Загружаем на S3 (если настроен AWS CLI)
if command -v aws &> /dev/null; then
echo -e "${YELLOW}Загружаем на S3...${NC}"
2025-09-26 10:50:20 +03:00
aws --endpoint-url="$S3_ENDPOINT" s3 cp "/tmp/$ARCHIVE_NAME" "s3://$BUCKET_NAME/$BACKUP_PREFIX/$ARCHIVE_NAME"
if [ $? -eq 0 ]; then
echo -e "${GREEN}✅ Бэкап успешно загружен на S3${NC}"
echo -e "${GREEN} S3 путь: s3://$BUCKET_NAME/$BACKUP_PREFIX/$ARCHIVE_NAME${NC}"
else
echo -e "${RED}❌ Ошибка загрузки на S3${NC}"
fi
else
echo -e "${YELLOW}⚠️ AWS CLI не установлен, пропускаем загрузку на S3${NC}"
fi
# Очищаем временный файл
rm -f "/tmp/$ARCHIVE_NAME"
# Показываем последние коммиты
echo -e "${GREEN}Последние коммиты:${NC}"
git log --oneline -5
echo -e "${GREEN}=== Backup завершен ===${NC}"