Войти в IT
Nextcloud сам по себе довольно удобен, особенно с дополнительными расширениями и подключением офис-редакторов по типу Collabora или OpenOffice, однако столкнулись с проблемой загрузки огромного количества (свыше миллиона) небольших файлов с разным расширением (в основном docx,xlsx,jpeg,pdf и т.д.), таковых набралось не несколько терабайт. Штатным методом через официального клиента или web эту проблему не решить, загрузка будет зависать и продолжаться бесконечно долго. Происходит это по причине медленной работы баз данных, фактически каждый файл необходимо открыть, сохранить в бд и закрыть.
Решением может выступать упрощение операции до двух:
1. Скопировать данные в хранилище Nextcloud
2. Просканировать наличие файлов
Приступим,
В моем случае есть компьютер с Windows и подключенным сетевым диском-хранилищем, Nextcloud развернут на Linux Ubuntu (не в snap или docker) и к нему есть доступ по ssh под root
На Windows открываем командную строку (CMD) и переходим к диску-хранилищу (у меня он под буквой Z)
z: #переход к диску
dir #просмотр содержимого
Предположим у менять есть папка DataShare, чтобы ее перенести вводим
scp -rp DataShare root@10.0.0.2:/srv/nextcloud/data/myuser/files/
Если хотите скопировать весь диск, команда будет
scp -rp * root@10.0.0.2:/srv/nextcloud/data/myuser/files/
где 10.0.0.2 – адрес вашего Nextcloud сервера, можно использовать и домен, главное чтобы был доступ по 22 порту SSH
/srv/nextcloud/data/myuser/files/ – путь куда копировать, он может быть другой и вместо myuser подставить имя пользователя, кому копируем файлы
После нажимаем Enter и запускается процесс копирования, ограничивается он только скоростью дисков и сети
Далее необходимо просканировать файлы, входим под root в CLI Nextcloud и вводим
sudo -u www-data php /srv/nextcloud/occ files:scan myuser
где вместо myuser – пользователя, которому копировали данные
/srv/nextcloud/occ – путь до occ
Чтобы просканировать отдельную папку, можно воспользоваться дополнительным аттрибутом
sudo -u www-data php /srv/nextcloud/occ files:scan –path myuser/files/DataShare
В конце появится небольшая информативная табличка о результатах
После чего можем зайти в Web-интерфейс Nextcloud и убедиться в наличии файлов
Если хотим чтоб он и далее синхронизировался с диском, то в приложении клиенте добавляем на синхронизацию диск или папку при этом не ставим галочку Использовать виртуальные файлы (VFS), иначе получим ошибку couldn’t convert to placeholder