Относительно недавно встала передо мной задача переместить файловое хранилище объемом 90 ТБ на объектное хранилище S3.
Из сложностей было то, что в рунете почти нет статей на тему миграции, а те, что есть, описывают подключение внешнего хранилища.
Мне же нужно было,чтобы S3 было именно в качестве основного хранилища.
Задача не особо сложная, но требует предельной внимательности в процессе переноса.
Предварительные условия
Nextcloud 27 версии или выше. На версиях ниже 27 версии некорректно работает MultiPart Upload, вследствие чего файл загружается, но Nextcloud не воспринимает заголовок Content-Length и в БД файл оказывается нулевого размера, а такие файлы Nextcloud даже не пытается вычитать с файлового хранилища.
СУБД: PostgreSQL. Можно и MySQL, но на маленьких объемах, в противном случае диск с БД постоянно будет забит IO, плюс на MySQL сложнее реализовать Point-In-Time Recovery, а для S3 в качестве основного хранилища это критично, так как в случае потери БД нельзя будет выполнить occ rescan, он на S3 не работает.
Далее описан весь процесс миграции. Все действия выполняются на свой страх и риск.