Mover una carpeta de datos de Nextcloud a un disco duro externo de mayor capacidad parece una tarea sencilla de copiar y editar. Pero no lo es. El detalle importante es que Nextcloud identifica el almacenamiento local mediante su ruta absoluta en el disco. Si esa ruta cambia por descuido, el servidor puede tratar los archivos como si estuvieran en una ubicación de almacenamiento diferente, lo que puede provocar registros de archivos duplicados o huérfanos, metadatos dañados o la pérdida de relaciones de compartición.
Por lo tanto, la solución más segura para una instalación existente consiste en mantener Nextcloud con la misma ruta del directorio de datos mientras se transfieren los datos al disco externo. El manual de administración actual de Nextcloud recomienda explícitamente mover el directorio y luego crear un enlace simbólico desde la ruta original a la nueva ubicación. El manual también advierte que el cambio directo datadirectoryrequiere modificaciones en la base de datos y no es un método de migración compatible. Consulte la guía de solución de problemas del directorio de datos de Nextcloud .
Antes de empezar: ¿Qué se verifica y qué depende de tu configuración?
| Pregunta | Respuesta práctica |
¿Puedo datadirectoryeditarlo config.php? | No es seguro hacerlo por sí solo. Nextcloud documenta que cambiar la ruta absoluta del almacenamiento local puede romper las relaciones de la base de datos. Es preferible conservar la ruta original con un enlace simbólico. |
| ¿Necesito una copia de seguridad completa? | Sí. La documentación de copia de seguridad de Nextcloud incluye la configuración, el directorio de datos, la base de datos y los datos relevantes de la aplicación o el tema personalizado. No considere el disco antiguo como su única copia de recuperación. |
| ¿Es necesario que la unidad externa sea ext4? | Este procedimiento no exige un sistema de archivos específico. Los ejemplos que se muestran a continuación utilizan ext4 porque el comportamiento habitual de propiedad y permisos en Linux es sencillo. Otros sistemas de archivos pueden requerir opciones de montaje diferentes. |
¿Debería correr files:scan --alldespués? | Normalmente no se recomienda para mover archivos conservando la ruta original. Úselo cuando falten archivos en la caché o cuando se hayan copiado archivos en el árbol de datos fuera de Nextcloud y necesiten un escaneo inmediato. |
| ¿Es un disco duro USB tan fiable como un disco interno? | Eso depende de la carcasa, el cable, la alimentación, el sistema de archivos y el host. Si una unidad extraíble deja de estar disponible, supone un riesgo para la disponibilidad, así que configure el montaje de forma persistente y verifíquelo antes de iniciar Nextcloud. |
1. Monte la unidad externa en una ruta estable.
Primero, identifique el dispositivo y el sistema de archivos. En Linux, comandos como lsblk -fy blkidmuestran el UUID del sistema de archivos. Evite crear una configuración permanente basada en un nombre de dispositivo como /dev/sdb1; los nombres de los dispositivos Linux pueden cambiar cuando se agrega hardware o cambia el orden de detección. El manual fstab de Linux recomienda identificadores UUID o LABEL para montajes persistentes.
lsblk -f
sudo blkid /dev/sdb1
sudo mkdir -p /mnt/nextcloud-data-storage
Agregue una entrada adecuada a /etc/fstab. Reemplace el UUID y el tipo de sistema de archivos de ejemplo con los valores de su propio disco:
UUID=YOUR-FILESYSTEM-UUID /mnt/nextcloud-data-storage ext4 defaults 0 2
Luego, prueba el montaje antes de tocar Nextcloud:
sudo mount -a
findmnt /mnt/nextcloud-data-storage
df -h /mnt/nextcloud-data-storage
Verifique el disco externo mediante su UUID y confirme su punto de montaje antes de mover cualquier archivo de Nextcloud.
Error común: la existencia de un directorio con un nombre específico /mnt/nextcloud-data-storageno prueba que el disco esté montado allí. Si la unidad no está presente, el directorio del punto de montaje aún puede existir en el disco del sistema. Acción: utilice findmnto mountpointcada vez que pruebe la migración y después de reiniciar el sistema.
2. Realiza una copia de seguridad de Nextcloud y detén las escrituras.
La guía de copias de seguridad actual de Nextcloud indica que una copia de seguridad recuperable incluye el directorio de datos, la configuración, la base de datos y otros contenidos específicos de la implementación, como aplicaciones y temas personalizados. Consulta la documentación oficial de copias de seguridad de Nextcloud y asegúrate de que la copia de seguridad se almacene en una ubicación distinta a la unidad que vas a reparticionar o reutilizar.
A continuación, habilite el modo de mantenimiento desde el directorio de instalación de Nextcloud. En Debian y Ubuntu, la cuenta del servidor web suele ser www-data:
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --on
La guía de migración también indica que no se debe ejecutar ninguna tarea programada (cron job) durante el traslado y recomienda detener los servidores web/de aplicaciones mientras se reubican los datos. La forma de hacerlo depende del despliegue: Apache, Nginx más PHP-FPM, Docker Compose, Snap, AIO y Kubernetes tienen límites de servicio diferentes.
Acción: desactive la entrada cron de Nextcloud o detenga el servicio cron correspondiente, y luego detenga el servicio web/de la aplicación antes de la copia final. Si el conjunto de datos es muy grande, puede precargar el disco externo mientras el sitio está en línea, luego entrar en modo de mantenimiento, detener los procesos de escritura y realizar una rsyncpasada final para capturar los cambios.
3. Copie todo el directorio de datos, incluidos los archivos ocultos.
No copie únicamente las carpetas de usuario. El directorio de datos también contiene archivos ocultos, como .ncdatadatos de la aplicación, que pertenecen al almacenamiento. Nextcloud identifica explícitamente los archivos ocultos en su procedimiento de migración.
Supongamos que el directorio actual es /var/www/nextcloud/datay que el disco externo está montado en /mnt/nextcloud-data-storage. Crea el destino y copia el directorio:
sudo mkdir -p /mnt/nextcloud-data-storage/data
sudo rsync -Aax --info=progress2 /var/www/nextcloud/data/ /mnt/nextcloud-data-storage/data/
La documentación de restauración de Nextcloud utiliza rsync -Aaxcomo ejemplo la preservación del árbol de directorios y los metadatos. Para instalaciones muy grandes, ejecute una segunda pasada después de detener todos los procesos de escritura e inspeccione el resultado. Las opciones exactas que necesita pueden variar si su origen utiliza ACL, atributos extendidos, sistemas de archivos inusuales o almacenamiento montado en contenedores.
Detenga las escrituras en segundo plano y copie el árbol de datos completo, incluidos los archivos de metadatos ocultos de Nextcloud.
Error común: se cree que una copia completada significa que la migración ha finalizado. No es así. Nextcloud aún necesita la ruta esperada, y el usuario HTTP debe poder acceder a la nueva ubicación y escribir en ella. Acción: verifique el número de archivos o las sumas de comprobación de muestras antes de cambiar de ruta y mantenga el directorio de origen intacto hasta que el nuevo almacenamiento haya superado las pruebas.
4. Conservar la ruta de datos original con un enlace simbólico.
Esta es la medida de seguridad clave. Supongamos que Nextcloud actualmente utiliza:
'datadirectory' => '/var/www/nextcloud/data',
No modifique ese valor para la migración recomendada que conserva la ruta. En su lugar, mantenga el directorio antiguo como una copia de reversión y reemplácelo con un enlace simbólico que apunte a la unidad externa:
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 documenta este método de enlace simbólico porque el almacenamiento local se identifica mediante la ruta absoluta. Con el enlace establecido, Nextcloud sigue teniendo acceso a los datos /var/www/nextcloud/dataaunque estos se encuentren en el disco externo.
Verifique la propiedad antes de realizar cambios generales en los permisos:
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
El usuario HTTP debe tener permisos para navegar por los directorios superiores y leer/escribir en el directorio de datos. El propietario correcto varía según la distribución y el método de instalación. La documentación de occ de Nextcloud indica que la cuenta HTTP suele ser la misma www-dataen Debian/Ubuntu, apacheen Fedora/CentOS y diferente en otros sistemas.
Conserve la ruta de acceso original del directorio de datos y cree un enlace simbólico que apunte al disco externo.
Error común: ejecutar recursivamente una chmod 777corrección genérica soluciona los problemas de permisos. Esto puede ocultar el problema real y, al mismo tiempo, debilitar la seguridad. Acción: compare el nuevo directorio con la propiedad y los permisos originales, conserve las listas de control de acceso (ACL) donde se utilicen y realice únicamente la corrección mínima necesaria para el usuario HTTP.
¿Y si de verdad quieres cambiar datadirectory?
Nextcloud describe un procedimiento sin enlaces simbólicos, pero la misma documentación lo etiqueta como no compatible y advierte que puede dañar la base de datos. Requiere modificar config.phpy actualizar la local::/old-data-dir/entrada correspondiente en la oc_storagestabla.
No se trata simplemente de una sintaxis alternativa para la misma operación; modifica el identificador de almacenamiento que Nextcloud registra internamente. Recomendación: utilice el método de enlace simbólico a menos que disponga de una copia de seguridad probada, un proceso de restauración probado y una razón operativa específica para eliminar la ruta de acceso anterior. Para una nueva instalación de Nextcloud, seleccione la ubicación final de los datos durante la instalación. Nextcloud indica explícitamente que esto es más sencillo que moverlos posteriormente.
5. Reinicia, verifica el montaje y vuelve a conectar Nextcloud.
Antes de iniciar Nextcloud, verifique que el sistema de archivos externo esté realmente montado y que el enlace simbólico se resuelva en él:
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
Reinicie el servicio web/de la aplicación y vuelva a habilitar la tarea programada de Nextcloud utilizando el método adecuado para su implementación. A continuación, desactive el modo de mantenimiento y compruebe el estado del servidor.
cd /var/www/nextcloud
sudo -E -u www-data php occ maintenance:mode --off
sudo -E -u www-data php occ status
Inicia sesión y prueba varias operaciones: abre un archivo existente, sube uno nuevo, cámbiale el nombre, bórralo, restáuralo desde la Papelera y confirma que otro cliente pueda sincronizarlo. Reinicia el servidor una vez y repite el proceso findmnt; esto detecta una /etc/fstabentrada no válida antes de que se convierta en un problema durante una interrupción del servicio.
Tras el cambio, verifique tanto el montaje del sistema operativo como las operaciones normales de archivos en Nextcloud.
¿Lo necesitas occ files:scan --all?
No automáticamente. La documentación del comando `files` de Nextcloud indica files:scanque actualiza la caché de archivos para los archivos nuevos o modificados, y puede ser útil después de copiar manualmente o al investigar inconsistencias en la caché. Un movimiento que conserva la ruta, ejecutado correctamente, tiene como objetivo mantener los mismos archivos y la misma ruta lógica de almacenamiento local, por lo que un escaneo completo no debería ser el paso predeterminado "por si acaso".
Acción: primero, pruebe la interfaz de usuario y compare los archivos esperados. Si faltan archivos en Nextcloud aunque estén presentes en el disco, realice un análisis dirigido o, cuando esté justificado, un análisis completo files:scan --all. Tenga en cuenta que un análisis completo en una instalación grande puede llevar bastante tiempo.
Lista de verificación de migración final
- Existe una base de datos, configuración y copia de seguridad de datos actualizada fuera del disco que se está migrando.
- El sistema de archivos externo tiene un montaje estable configurado por UUID o etiqueta.
findmntconfirma que la unidad externa está realmente montada.
- Las operaciones de escritura de Nextcloud y las tareas programadas (cron jobs) se detienen durante la sincronización final.
- Se copió el directorio de datos completo, incluyendo
.ncdata.
- La ruta de acceso original
datadirectoryse conserva mediante un enlace simbólico.
- El usuario HTTP puede recorrer la ruta de montaje y leer/escribir los datos.
- Nextcloud se inicia sin errores de almacenamiento y
occ statusfunciona con normalidad.
- Las pruebas de carga, cambio de nombre, eliminación, restauración, descarga y sincronización se realizaron correctamente.
- El servidor se ha reiniciado una vez para comprobar que la unidad externa se monta correctamente al arrancar.
- El antiguo directorio de datos no se ha eliminado hasta que se haya probado la nueva configuración y se haya realizado una copia de seguridad por separado.
La idea principal es sencilla: migrar datos de Nextcloud no se limita a copiar el sistema de archivos. La ruta forma parte de la identidad de almacenamiento local de Nextcloud. Conserve esa ruta siempre que sea posible, configure la unidad externa como un punto de montaje del sistema fiable, detenga las escrituras durante la copia final y mantenga una copia de reversión hasta que el nuevo almacenamiento haya superado las pruebas de la aplicación y un reinicio.