Перенос каталога данных Nextcloud необходим для увеличения хранилища, улучшения производительности или изменения инфраструктуры. Эта инструкция подробно описывает процесс переноса, включая настройки системы и проверку работоспособности после завершения. Следуйте рекомендациям, чтобы выполнить перенос безопасно, минимизировать простой и сохранить корректную работу вашего Nextcloud.
Перед началом важно убедиться, что у вас есть актуальная резервная копия всех данных вашего облака, включая файлы и базу данных. Это позволит избежать необратимых последствий в случае ошибок.
Определите текущий каталог данных Nextcloud
По умолчанию каталог данных находится в папке установки Nextcloud /var/www/nextcloud/data
Вы можете найти текущий путь в конфигурационном файле Nextcloud:
sudo nano /var/www/nextcloud/config/config.php
Найдите строку ‘datadirectory’ => ‘/var/www/nextcloud/data’,
Запись должна выглядеть примерно как на картинке ниже:

Включаем режим обслуживания Nextcloud
Выполните команду в папке установки (обычно /var/www/nextcloud):
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
После выполнения этой команды пользователи при входе увидят сообщение о техническом обслуживании.
Остановите веб-сервер и связанные процессы
sudo systemctl stop apache2
sudo systemctl stop nginx
sudo systemctl stop php7.4-fpm # Замените версию PHP на вашу
Скопируйте данные в новое место
Скопируйте текущий каталог данных в новое место. Например, если новый каталог будет на диске /mnt/newstorage:
sudo rsync -avz /var/www/nextcloud/data /mnt/newstorage/
Пояснение по ключам rsync:
- -a сохраняет права доступа, временные метки и символические ссылки
- -v выводит процесс копирования
- -z использует сжатие при передаче данных
Настройте права доступа
Убедитесь, что новый каталог данных принадлежит пользователю, под которым работает веб-сервер (например, www-data):
sudo chown -R www-data:www-data /mnt/newstorage/data
sudo chmod -R 750 /mnt/newstorage/data
Далее обновим конфигурацию, для этого изменим путь к каталогу данных в файле config.php:
'datadirectory' => '/mnt/newstorage/data',
Должно получиться примерно как на картинке ниже:

Так же, если вы используете временные директории (temp), убедитесь, что их путь соответствует новому расположению данных. Задать это вы можете в том же файле config.php:
'tempdirectory' => '/mnt/newstorage/data/tmp',
Если у вас включен SELinux, установите правильный контекст безопасности для нового каталога:
sudo semanage fcontext -a -t httpd_sys_rw_content_t "/mnt/newstorage/data(/.*)?"
sudo restorecon -R /mnt/newstorage/data
Запустите веб-сервер
Далее запускаем веб-сервер:
sudo systemctl start apache2
sudo systemctl start nginx
sudo systemctl start php7.4-fpm
После запуска веб-сервера, давайте убедимся, что наше облако работает корректно:
sudo -u www-data php /var/www/nextcloud/occ status
Должно выдать примерно как на картинке ниже:

Отключаем режим обслуживания Nextcloud
Когда перенос завершён, отключите режим обслуживания:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
Теперь ваше облако снова будет доступно для пользователей.
Далее проведите проверку, для этого:
- Убедитесь, что Nextcloud работает корректно.
- Проверьте доступность данных (файлов и папок).
- Убедитесь, что доступ к данным осуществляется с правильными правами.
Так же не забудьте проверить наличие ошибок в журнале после выполнения всех операций. Для этого используйте команду:
sudo tail -f /var/www/nextcloud/data/nextcloud.log
После завершения переноса не забывайте регулярно проверять доступность данных и следить за журналами Nextcloud для выявления возможных ошибок. Грамотно настроенная система не только удовлетворяет текущие потребности, но и готова к масштабированию в будущем.
Если вы всё сделали правильно, ваши пользователи смогут снова работать с облаком без каких-либо изменений в функциональности.
Помогла статья? Подписывайся на Telegram канал автора.
Анонсы всех статей, много другой полезной и интересной информации, которая не попадает на сайт.
Если у вас имеются вопросы, задавайте их в комментариях.