Как безопасно перенести папку с данными Nextcloud на внешний жесткий диск

Перемещение папки с данными Nextcloud на более вместительный внешний жесткий диск кажется простой операцией копирования и редактирования. Но это не так. Важная деталь заключается в том, что Nextcloud идентифицирует локальное хранилище по его абсолютному пути на диске. Если этот путь изменить по неосторожности, сервер может рассматривать файлы как расположенные в другом месте, что может привести к появлению дубликатов или «осиротевших» записей файлов, повреждению метаданных или потере связей между общими ресурсами.

Таким образом, наиболее безопасный практический подход для существующей установки заключается в том, чтобы Nextcloud продолжал видеть тот же путь к каталогу данных , перемещая фактические данные на внешний диск. В текущем руководстве администратора Nextcloud прямо рекомендуется переместить каталог, а затем создать символическую ссылку с исходного пути на новое местоположение. В руководстве также предупреждается, что прямое изменение datadirectoryтребует изменений в базе данных и не является поддерживаемым методом миграции. См. руководство по устранению неполадок с каталогом данных Nextcloud .

Перед началом работы: что проверяется, а что зависит от вашей конфигурации?

ВопросПрактический ответ
Могу ли я просто внести изменения datadirectoryв текст config.php?Само по себе это небезопасно. В документации Nextcloud указано, что изменение абсолютного пути к локальному хранилищу может нарушить связи в базе данных. Предпочтительнее сохранить исходный путь с помощью символической ссылки.
Нужна ли мне полная резервная копия?Да. Документация Nextcloud по резервному копированию включает в себя конфигурацию, каталог данных, базу данных и соответствующие данные пользовательских приложений/тем. Не рассматривайте старый диск как единственную резервную копию.
Обязательно ли внешний жесткий диск должен быть в файловой системе ext4?Данная процедура не предписывает использование какой-либо конкретной файловой системы. В приведенных ниже примерах используется ext4, поскольку стандартное поведение Linux в отношении прав собственности и разрешений довольно простое. Для других файловых систем могут потребоваться другие параметры монтирования.
Стоит ли мне files:scan --allпосле этого побегать?Обычно не используется для перемещения с сохранением пути. Применяется, когда файлы фактически отсутствуют в файловом кэше или когда файлы были скопированы в дерево данных вне Nextcloud и требуется немедленное повторное сканирование.
Насколько надежен USB-накопитель по сравнению с внутренним жестким диском?Это зависит от корпуса, кабеля, питания, файловой системы и хоста. Недоступность съемного диска представляет собой риск потери доступности, поэтому сделайте монтирование постоянным и проверьте его перед запуском Nextcloud.

1. Установите внешний жесткий диск на устойчивой опоре.

Сначала определите устройство и файловую систему. В Linux команды, такие как `<filesystem>` lsblk -fи blkid`<filesystem>`, показывают UUID файловой системы. Избегайте создания постоянной конфигурации на основе имени устройства, например /dev/sdb1`<filesystem>`; имена устройств в Linux могут меняться при добавлении оборудования или изменении порядка обнаружения. В руководстве по fstab для Linux рекомендуется использовать идентификаторы UUID или LABEL для постоянных точек монтирования.

lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage

Добавьте подходящую запись в файл /etc/fstab. Замените пример UUID и тип файловой системы значениями с вашего диска:

UUID=YOUR-FILESYSTEM-UUID  /mnt/nextcloud-data-storage  ext4  defaults  0  2

Затем проверьте монтирование, прежде чем вносить изменения в Nextcloud:

sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
В терминале Linux отображаются команды lsblk, blkid, запись UUID в файле fstab, mount -a и findmnt для внешнего диска Nextcloud.

Перед перемещением файлов Nextcloud проверьте внешний диск по UUID и подтвердите точку его монтирования.

Распространенное заблуждение: наличие каталога с определенным именем /mnt/nextcloud-data-storageне доказывает, что диск смонтирован в этом каталоге. Если диск отсутствует, каталог точки монтирования может по-прежнему существовать на системном диске. Действие: используйте команду findmnt`make` или ` mountpointmake` каждый раз при тестировании миграции и после перезагрузки.

2. Создайте резервную копию Nextcloud и остановите запись.

В текущем руководстве по резервному копированию Nextcloud указано, что восстанавливаемая резервная копия включает в себя каталог данных, конфигурацию, базу данных и другое содержимое, специфичное для развертывания, такое как пользовательские приложения и темы. Ознакомьтесь с официальной документацией Nextcloud по резервному копированию и убедитесь, что резервная копия хранится в другом месте, а не на том диске, который вы собираетесь переразметить или перепрофилировать.

Далее включите режим обслуживания из каталога установки Nextcloud. В Debian и Ubuntu учетная запись веб-сервера обычно выглядит так www-data:

cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on

В руководстве по миграции также указано, что во время переноса не следует запускать задания cron, и рекомендуется остановить веб-серверы/серверы приложений на время перемещения данных. Способ выполнения этого зависит от используемой системы развертывания: Apache, Nginx плюс PHP-FPM, Docker Compose, Snap, AIO и Kubernetes имеют разные границы доступа к сервисам.

Действие: отключите запись cron в Nextcloud или остановите соответствующую службу cron, затем остановите веб-службу/приложение перед окончательным копированием. Если набор данных очень большой, вы можете предварительно заполнить внешний диск данными, пока сайт находится в сети, затем перейти в режим обслуживания, остановить записывающие устройства и выполнить заключительный rsyncпроход для фиксации изменений.

3. Скопируйте всю папку с данными, включая скрытые файлы.

Не копируйте только папки пользователей. Каталог данных также содержит скрытые файлы, такие как .ncdataданные приложений, которые относятся к хранилищу. Nextcloud явно указывает на скрытые файлы (включая файлы, начинающиеся с точки) в своей процедуре перемещения.

Предположим, текущий каталог — это `<каталог>` /var/www/nextcloud/data, а внешний диск смонтирован в `< /mnt/nextcloud-data-storageкаталог>`. Создайте целевой каталог и скопируйте в него содержимое:

sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2   /var/www/nextcloud/data/   /mnt/nextcloud-data-storage/data/

В документации по восстановлению Nextcloud rsync -Aaxв качестве примера используется сохранение дерева каталогов и метаданных. Для очень больших установок выполните второй проход после остановки всех записывающих устройств и изучите результат. Необходимые параметры могут различаться в зависимости от того, использует ли ваш источник списки контроля доступа (ACL), расширенные атрибуты, необычные файловые системы или хранилище, смонтированное в контейнере.

В терминале отображается сообщение о режиме обслуживания Nextcloud, о том, что cron остановлен, и что rsync копирует весь каталог данных, включая файл .ncdata, на внешний диск.

Остановите фоновую запись и скопируйте все дерево данных, включая скрытые файлы метаданных Nextcloud.

Распространенное заблуждение: завершенное копирование означает окончание миграции. Это не так. Nextcloud по-прежнему нуждается в ожидаемом пути, и HTTP-пользователь должен иметь возможность перемещаться по новому местоположению и записывать в него данные. Действие: проверьте количество файлов или контрольные суммы перед переключением путей и сохраняйте исходный каталог нетронутым до тех пор, пока новое хранилище не пройдет проверку.

4. Сохраните исходный путь к данным с помощью символической ссылки.

Это ключевая мера безопасности. Предположим, что Nextcloud в настоящее время использует:

'datadirectory' => '/var/www/nextcloud/data',

Не изменяйте это значение для рекомендуемой миграции с сохранением пути. Вместо этого сохраните старый каталог в качестве копии для отката и замените его символической ссылкой, указывающей на внешний диск:

sudo mv /var/www/nextcloud/data /var/www/nextcloud/data.old
sudo ln -s /mnt/nextcloud-data-storage/data /var/www/nextcloud/data
ls -ld /var/www/nextcloud/data

В документации Nextcloud описан этот метод создания символических ссылок, поскольку локальное хранилище идентифицируется абсолютным путем. При наличии такой ссылки Nextcloud продолжает видеть данные, /var/www/nextcloud/dataдаже если они находятся на внешнем диске.

Перед внесением существенных изменений в права доступа проверьте права собственности:

stat -c '%U:%G %a %n' /var/www/nextcloud/data.old
stat -c '%U:%G %a %n' /mnt/nextcloud-data-storage/data
namei -l /mnt/nextcloud-data-storage/data

Пользователь HTTP должен иметь возможность перемещаться по родительским каталогам и читать/записывать данные в каталог. Правильный владелец зависит от дистрибутива и способа установки. В документации Nextcloud по OCC отмечается, что учетная запись HTTP обычно используется www-dataв Debian/Ubuntu, apacheFedora/CentOS и отличается в других системах.

В терминале отображаются результаты проверки прав собственности и символическая ссылка с исходного пути к данным Nextcloud на внешний диск.

Сохраните исходный путь к каталогу данных и укажите в нем путь к внешнему диску с помощью символической ссылки.

Распространенное заблуждение: рекурсивное выполнение универсальной команды chmod 777исправляет права доступа. Это может скрывать реальную проблему и ослаблять безопасность. Действие: сравните новый каталог с исходными правами собственности и правами доступа, сохраните списки контроля доступа (ACL) там, где они используются, и внесите только минимально необходимые исправления для пользователя HTTP.

А что, если вы действительно хотите перемен datadirectory?

В документации Nextcloud описана процедура без использования символических ссылок, но она помечена как неподдерживаемая и предупреждает о возможности повреждения базы данных. Для этого требуется как изменение config.php, так и обновление соответствующей local::/old-data-dir/записи в oc_storagesтаблице.

Это не просто альтернативный синтаксис для той же операции; он изменяет идентификатор хранилища, который Nextcloud записывает внутри себя. Действие: используйте метод символической ссылки, если у вас нет проверенной резервной копии, проверенного процесса восстановления и конкретной причины для удаления старого пути. При новой установке Nextcloud выберите конечное местоположение данных во время установки. Nextcloud прямо указывает, что это проще, чем перемещать его позже.

5. Перезагрузите систему, проверьте правильность монтирования и снова подключите Nextcloud к сети.

Перед запуском Nextcloud убедитесь, что внешняя файловая система действительно смонтирована и что символическая ссылка ведет на нее:

findmnt /mnt/nextcloud-data-storage
readlink -f /var/www/nextcloud/data
sudo -E -u www-data test -r /var/www/nextcloud/data/.ncdata && echo readable

Перезапустите веб-службу/приложение и повторно включите задание cron Nextcloud, используя метод, подходящий для вашей конфигурации. Затем отключите режим обслуживания и проверьте состояние сервера:

cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status

Войдите в систему и протестируйте несколько операций: откройте существующий файл, загрузите новый файл, переименуйте его, удалите, восстановите из корзины и убедитесь, что другой клиент может его синхронизировать. Перезагрузите хост и повторите процедуру findmnt; это позволит обнаружить некорректную /etc/fstabзапись до того, как она станет неожиданностью во время сбоя.

Проверка состояния Nextcloud и монтирования внешней файловой системы через интерфейс Nextcloud Files в терминале.

После переключения проверьте как монтирование операционной системы, так и обычные операции с файлами в Nextcloud.

Вам это нужно occ files:scan --all?

Не автоматически. В документации по команде files в Nextcloud говорится, что files:scanона обновляет файловый кэш для новых или измененных файлов и может быть полезна после ручного копирования или при исследовании несоответствий кэша. Правильно выполненное перемещение с сохранением пути предназначено для сохранения тех же файлов и того же логического пути к локальному хранилищу, поэтому полное сканирование не должно быть шагом по умолчанию «на всякий случай».

Действие: сначала протестируйте пользовательский интерфейс и сравните ожидаемые файлы. Если файлы отсутствуют в Nextcloud, хотя они присутствуют на диске, используйте целевое сканирование или, если это оправдано. files:scan --allИмейте в виду, что полное сканирование большой установки может занять значительное время.

Итоговый контрольный список миграции

  • Актуальная база данных, конфигурация и резервная копия данных находятся вне диска, с которого осуществляется миграция.
  • Внешняя файловая система имеет стабильное монтирование, настроенное по UUID или LABEL.
  • findmntподтверждает, что внешний накопитель действительно подключен.
  • Во время окончательной синхронизации запись в Nextcloud и выполнение заданий cron приостанавливаются.
  • Была скопирована вся директория с данными, включая файл .ncdata.
  • Исходный datadirectoryпуть к файлу сохраняется с помощью символической ссылки.
  • Пользователь HTTP может перемещаться по пути монтирования и читать/записывать данные.
  • Nextcloud запускается без ошибок хранилища и occ statusработает в обычном режиме.
  • Тесты загрузки, переименования, удаления, восстановления, скачивания и синхронизации прошли успешно.
  • Сервер был перезагружен один раз, чтобы подтвердить, что внешний жесткий диск надежно подключается при запуске.
  • Старая директория с данными не будет удалена до тех пор, пока новая конфигурация не будет протестирована и не будет создана отдельная резервная копия.

Главная идея проста: миграция данных Nextcloud — это не просто копирование файловой системы. Путь является частью идентификатора локального хранилища Nextcloud. По возможности сохраняйте этот путь, сделайте внешний диск надежным местом монтирования системы, остановите запись во время окончательного копирования и сохраните возможность отката до тех пор, пока новое хранилище не выдержит как тестирования приложениями, так и перезагрузки.

Оставить комментарий

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

Сравните 10 инструментов для сканирования сети (ping sweep) для быстрого обнаружения локальных сетей, кроссплатформенного сканирования и управления IP-адресами. Узнайте, что может — и чего не может — показать сканирование.

6 лучших инструментов управления сетью для отслеживания производительности

6 лучших инструментов управления сетью для отслеживания производительности

Сравните шесть инструментов управления сетью для мониторинга производительности, включая покрытие SNMP, сопоставление, оповещения, модели развертывания и компромиссы в отношении стоимости.

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Сравните лучшие программы для анализа Wi-Fi-сетей для Windows, iPhone и Android, включая инструменты для оценки загруженности каналов, зоны покрытия сигнала, тепловых карт и устранения неполадок в сети.

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Сравните семь бесплатных мониторов ping с открытым исходным кодом, от полноценных сетевых пакетов до специализированных инструментов для измерения задержки, и выберите тот, который лучше всего подходит для проверки доступности, потери пакетов и истории соединений.

QoS в сетях: что делает качество обслуживания и как оно работает.

QoS в сетях: что делает качество обслуживания и как оно работает.

Узнайте, что означает QoS в сетях, как маркировка DSCP и очереди трафика определяют приоритет голосовых, видео- и бизнес-приложений, и что QoS не может исправить.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Сравните надежные SFTP-серверы для Windows и Linux, включая OpenSSH, Bitvise, SolarWinds и SFTPGo. Найдите подходящее решение для ваших потребностей в области безопасности и передачи файлов.

7 лучших инструментов для управления IP-адресами для сетевых команд

7 лучших инструментов для управления IP-адресами для сетевых команд

Сравните семь инструментов управления IP-адресами для обнаружения подсетей, координации DNS и DHCP, инвентаризации сети и управления IP-адресами с открытым исходным кодом.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Создайте практичную систему мониторинга сети с четким охватом устройств, полезными показателями производительности, действенными оповещениями и сравнением SolarWinds NPM, PRTG и OpManager.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

Сравните инструменты сканирования сети для быстрого обнаружения устройств, кроссплатформенного сканирования IP-адресов и корпоративного управления IP-адресами, получив рекомендации по подбору подходящего варианта для вашей сети.

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Используйте опцию --traceroute в Nmap, чтобы сопоставить узлы маршрута с авторизованным хостом, понять вывод информации о узлах и времени кругового обхода (RTT), а также устранить неполадки, связанные с отсутствием ответов, без избыточного сканирования.