Перенос данных в SeaweedFS
Перенос данных нужен только при выборе SeaweedFS в качестве хранилища данных. Если вы планируете использовать MinIO или внешнее S3-совместимое хранилище, пропустите этот раздел.
SeaweedFS — S3-совместимое хранилище, которое заменяет MinIO. Объекты переносятся копированием через S3 API с помощью утилиты mc mirror, однако скопировать файлы напрямую нельзя, так как MinIO хранит данные в собственном внутреннем формате, который SeaweedFS прочитать не может.
В этой инструкции описаны способы переноса данных TRON.ASOC из MinIO в SeaweedFS.
Перед началом работы
Перед переносом данных убедитесь в следующем:
- у вас есть доступ к новому реестру
pcr.tronasoc.ru, из которого загружаются образы TRON.ASOC; - старые данные MinIO находятся в директории
/mnt/minio-data.
Утилита mc уже входит в образ MinIO, устанавливать ее отдельно не нужно.
Порядок действий
Чтобы перенести данные с MinIO на SeaweedFS, выполните следующие шаги:
- Остановите TRON.ASOC:
docker compose down
Не выполняйте docker compose down -v вместо docker compose down, так как флаг -v безвозвратно удаляет данные
- В файле
.envукажите значения переменных:
COMPOSE_PROFILES=seaweedfs
ASOC_MINIO_HOST=seaweedfs
Учетные данные (ASOC_MINIO_ROOT_USER / ASOC_MINIO_ROOT_PASSWORD) менять не нужно: SeaweedFS использует их же — как AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY.
- Запустите перенос данных командами:
docker compose --profile seaweedfs --profile migrate up -d seaweedfs migrate-job
docker compose --profile seaweedfs --profile migrate logs -f migrate-job
- Дождитесь завершения переноса данных.
После завершения переноса в логах появляется строка MIGRATION_DONE. Задание migrate-job временно поднимает MinIO со старыми данными (/mnt/minio-data), дожидается готовности обоих хранилищ и копирует все бакеты в SeaweedFS с помощью mc mirror.
Флаг --profile перезаписывает значение COMPOSE_PROFILES из .env, а не дополняет его, поэтому в команде перечислены оба профиля: seaweedfs и migrate. Значение COMPOSE_PROFILES=seaweedfs, заданное в .env на шаге 2, понадобится на шаге 4, где команда запускается без флагов.
Переносятся все бакеты MinIO: custom-field-files, sbom, reports, scan-results, а также postgres-backups, если использовался бэкап-профиль.
При большом объеме данных (десятки ГБ или десятки тысяч объектов) копирование может занять больше времени и прерваться под нагрузкой. Это не критично, поскольку mc mirror можно безопасно запускать повторно и при повторном запуске задания копирование продолжится с места остановки.
- Запустите TRON.ASOC:
docker compose up -d
Проверка результата
Откройте веб-интерфейс TRON.ASOC и убедитесь, что прежние отчеты и файлы отображаются в системе.
Для дополнительной проверки списка бакетов можно запустить mc из образа MinIO:
docker run --rm --network <проект>_default -e HOME=/tmp \
--entrypoint bash pcr.tronasoc.ru/asoc/external/minio:2026.5.19 \
-c 'mc alias set sw http://seaweedfs:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD --api s3v4 && mc ls sw'
После успешной проверки сохраняйте старые данные в /mnt/minio-data в течение 30 дней как резервную копию на случай отката. По истечении этого срока данные можно удалить вручную; автоматическая очистка не предусмотрена.