Бэкапы без боли за 40 евро
Зачем вообще заморачиваться с бэкапами?
Если ты хоть раз терял данные, то уже знаешь, что бэкапы — это не роскошь, а вопрос выживания. Диски умирают, шифровальщики шифруют, пользователи умудряются удалить что-то важное без малейшего понимания последствий. Ну и сейчас как будто с таким количеством информации в компании уже трудно дышать без надёжного хранилища бэкапов.
Почему MinIO?
MinIO — это S3-совместимое хранилище без каких либо тарифов крупных облаков. Open-Source, поднимается где угодно, масштабируется в три клика, поддерживает шифрование, репликацию, версии файлов.
К тому же, MinIO показывает отличную производительность. Мы протестировали производительность на реальной задаче по копированию бекапов на наш сервер: 750 ГБ данных бэкапятся за ~3 часа. Это довольно хороший результат.

Как это заставить работать?
С централизованного хранилища бекапов периодически копируются бекапы через rclone.
MinIO принимает их, сжимает, шифрует и кладёт к себе.
Через веб интерфейс можно посмотреть содержимое бакета.
Всё автоматизировано — настроил раз и забыл.
Настроить процесс можно под любые нужды: хочешь делать инкрементальные бэкапы — пожалуйста, нужно архивировать старые версии — легко.
Что ещё можно хранить?
Логи серверов (иногда они говорят больше, чем твои админы)
Дамп базы (вдруг кто-то случайно дропнет прод?)
Файлы пользователей (если у тебя сервис, где это критично)
Архивы проектов (клиенты любят откатываться на версию 5 летней давности)
Контент медиа-сервисов (если у тебя видеохостинг или облачное хранилище)
Как развернуть MinIO с Docker
Если у тебя ещё нет Docker, установи его:
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
Далее создаём сертификаты. Можно использовать Let«s Encrypt или самоподписанные:
Let«s Encrypt:
apt install certbot
certbot certonly --standalone -d
mkdir -p /opt/minio/certs
ln -s /etc/letsencrypt/live/minio.oracix.ru/fullchain.pem /opt/minio/certs/minio.crt
ln -s /etc/letsencrypt/live/minio.oracix.ru/privkey.pem /opt/minio/certs/minio.key
Самоподписанный сертификат:
mkdir -p /opt/minio/certs
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /opt/minio/certs/minio.key -out /opt/minio/certs/minio.crt \
-subj "/C=RU/ST=State/L=City/O=Organization/OU=IT/CN="
Теперь создаём docker-compose.yml
:
services:
minio:
image: quay.io/minio/minio:latest
container_name: minio
restart: always
ports:
- "9000:9000"
- "9001:9001"
volumes:
- /opt/minio/data:/data
- /opt/minio/certs/minio.crt:/certs/public.crt:ro
- /opt/minio/certs/minio.key:/certs/private.key:ro
environment:
MINIO_ROOT_USER: "admin"
MINIO_ROOT_PASSWORD: "StrongPassword123"
command: server /data --console-address ":9001" --certs-dir /certs
Запускаем MinIO:
docker-compose up -d
MinIO доступен по https:/
.
Копируем бекапы в MiniO
Для автоматизации сброса бекапов я использую rclone + cron со стороны сервера где хранятся бекапы.
Установим rclone
:
curl https://rclone.org/install.sh | sudo bash
Настройка MinIO как удаленного хранилища в rclone
:
rclone config
Создать новое подключение →
New Remote
Введите имя →
minio
Выберите тип хранилища →
s3
Ввести
endpoint
→https://your-minio-server:9000
Ввести
access_key
иsecret_key
Оставить пустым
region
(если MinIO не требует региона)Выбрать
ACL
(обычноprivate
)Сохранить конфигурацию (
y
→ Enter)
Запуск копирования в MinIO:
rclone copy /local/path minio:mybucket --transfers=10 --checkers=10 --progress
Где:
-transfers=10
— число параллельных потоков загрузки (настраивается)-checkers=10
— число потоков проверки файлов-progress
— отображение прогресса передачи
Немного про автоматизацию:
Автоматизация с помощью cron
:
Используем rclone
для периодического копирования бэкапов.
Создайте файл /usr/local/bin/upload_backups.sh
:
#!/bin/bash
LOGFILE="/var/log/minio_backup.log"
echo "$(date): Started copy" >> "$LOGFILE"
BACKUP_DIR="/local/path"
BUCKET="minio:mybucket"
rclone copy "$BACKUP_DIR" "$BUCKET" --transfers=10 --checkers=10 --progress --log-file "$LOGFILE" --log-level INFO
echo "$(date): Upload finished" >> "$LOGFILE"
chmod +x /usr/local/bin/upload_backups.sh
Далее добавим задачу в cron
:
crontab -e
0 2 * * * /usr/local/bin/upload_backups.sh
Если нужно удалять старые файлы (например, старше 90 дней), можно добавить команду:
rclone delete --min-age 90d minio:mybucket --progress
Сколько стоит?
40 евро в месяц за 4 TB Storage VPS. Гибкие тарифы, лёгкая масштабируемость, безопасность уровня банковского хранилища (ну почти). Если нужно больше объёма или резервные копии на отдельные сервера — всё обсуждаемо.
Почему именно у нас?
Никаких сюрпризов в тарифах
Помощь в установке
Быстрый доступ, без перегруженных дата-центров
Локация в российских дата-центрах
Гарантированное сохранение данных
Техподдержка, которая не будет предлагать «перезагрузить компьютер»
Проверенная скорость — 750 ГБ за ~3 часа без нагрузки на систему
Сравнение цен с облачными провайдерами
Провайдер | Цена за 4Т | Дополнительные расходы |
---|---|---|
Наше предложение | ~3500 | Фиксированная стоимость, без скрытых платежей |
Croc | ~4500 | Дополнительные расходы на трафик |
Selectel | ~4500 | Дополнительные расходы на трафик |
Yandex.Cloud | ~8000 | Дополнительная плата за трафик и запросы |