¿Cómo se pueden realizar copias de seguridad y restaurar datos de Nextcloud de forma independiente? (Versionamiento / Instantáneas)

¿Cómo se pueden realizar copias de seguridad y restaurar datos de Nextcloud de forma independiente? (Versionamiento / Instantáneas)

Siempre que varios usuarios interactúan con una instalación de Nextcloud, existe la posibilidad de que se produzca un error. Potencialmente, un miembro de la familia puede eliminar una imagen antigua o un compañero de trabajo puede marcar accidentalmente una tarea o un evento del calendario, lo que genera problemas para otros usuarios.

Cuando están disponibles instantáneas completas del sistema de archivos o copias de seguridad de todo el directorio de Nextcloud, se pueden usar para restaurar un estado anterior de todo el servidor. Esto está bien en caso de una falla total del sistema.

Sin embargo, se convierte en un problema si el problema sólo se nota después de un tiempo y, mientras tanto, los usuarios han modificado otros datos. Luego, se debe elegir entre rescatar datos antiguos y destruir todo el progreso o mantener el estado actual.

ElDocumentación de NextCloudsólo describe una forma de restaurar toda la instalación.

¿Existe alguna forma de realizar una copia de seguridad más inteligente y automática de todos los datos de Nextcloud (archivos, mensajes, calendarios, tareas, etc.) para que se puedan restaurar de forma independiente? (¿Quizás incluso en un estado en línea?)

Respuesta1

De hecho, restaurar un estado en línea requeriría una copia de seguridad completa del disco (que, por supuesto, podría realizarse de forma incremental).

Por supuesto, las cosas que realmente cambian a través de la interacción del usuario son

  1. la base de datos (que contiene toda la información del usuario, metadatos de archivos, permisos...)
  2. el almacén de datos
  3. nextcloud en sí (ya que podría actualizarse).

Podemos "resolver" 3. simplemente solicitando una copia de seguridad completa de los tres cada vez que haga una copia de seguridad de nextcloud (es posible que los formatos de bases de datos no sean compatibles con versiones anteriores).

En una configuración típica de nextcloud en contenedores, tendría dos o tres contenedores:

  1. el contenedor de la base de datos "DB", que debe iniciarse primero (normalmente ejecuta postgresql)
  2. el contenedor que realmente ejecuta nextcloud "NC", que se conecta a la base de datos en DB y tiene el directorio de datos montado como volumen externo "V"
  3. (un proxy inverso para permitir ocultar fácilmente nextcloud detrás de HTTPS y desacoplar el manejo del certificado SSL del contenedor de nextcloud)

Ahora, una copia de seguridad regular consistiría en

  1. detener nextcloud, o al menos congelar NC, o detener NC por completo
  2. hacer una copia de seguridad de V (que puede ser agradable e incremental; cualquier utilidad de copia de seguridad moderna lo hará),
  3. decirle a su base de datos que haga una copia de seguridad ( pg_backup_start), lo que iniciará la copia de seguridad en un estado consistente (la base de datos se asegura de que las nuevas operaciones no influyan en el estado del que se realiza la copia de seguridad)
  4. Justo después de iniciar el tercer paso, para restaurar la funcionalidad, reinicie nextcloud (o descongele o reinicie NC)
  5. hacer que la base de datos escriba el volcado en un archivo ( pg_backup_stop); asegúrese de saber qué copia de seguridad de datos pertenece a qué copia de seguridad de base de datos (debe quedar claro en cuanto a hora y fecha)

En general, dado que el contenedor nextcloud real no será muy grande, ya que no contiene ni los datos en sí ni la base de datos, también tendría sentido guardarlo junto con los datos y las copias de seguridad de la base de datos.

La restauración se puede realizar entonces en una máquina (virtual) completamente diferente, generando una copia del contenedor de la base de datos, restaurando la copia de seguridad de la base de datos y, mientras tanto, descomprimiendo la copia de seguridad de los datos y luego, una vez que la base de datos haya comenzado, inicie el contenedor nextcloud con los datos. montado.


De hecho, dado que los tiempos de ejecución de contenedores (podman, pero también Docker) le permiten establecer redes independientes, puede tener tantos servidores de bases de datos ejecutándose en paralelo como desee; junto con un sistema de archivos que utiliza para el volumen de datos que admite instantáneas (ZFS, btrfs y cosas como instantáneas LVM + aprovisionamiento ligero XFS, bcachefs...), podría explorar el estado anterior en paralelo a su estado actual, sin que interfieran. .

Respuesta2

Calendario, Mensajes, etc.
En teoriaun volcado de base de datos debería crear entradas de calendario, etc. con una o más consultas INSERT.
Solo necesitaría encontrar los INSERT/s correctos e intentar reinsertarlos en la base de datos actual. (Haría una copia de seguridad del estado actual antes de probarlo)

En mi opinión, la papelera y las versiones ofrecen buenas opciones para restaurar datos para los usuarios.

Archivos y papelera
Por defecto la papelera está activada. Cuando un usuario elimina un archivo, va a la papelera. Puede especificar la antigüedad para guardar los archivos en la papelera config/config.phpcon la entrada: trashbin_retention_obligation' => 'auto, 128',(consulte el manual para obtener más detalles). Sin embargo, si la cuota de espacio/usuario disponible es inferior al 50%, es posible que se limpie antes o si la administración se ejecuta occ trashbin:expire;occ trashbin:cleanupmanualmente. (o por elección del usuario)
No uso el calendario, tal vez las entradas eliminadas del calendario también terminen en la papelera y puedan restaurarse, no lo sé.

Archivos y versión
Otra cosa es la "versión de la aplicación nextcloud" que agrega la opción de restaurar la versión anterior de un archivo. La edad podría establecerse 'versions_retention_obligation' => 'auto, 128',en config.php. Habilítelo en la sección de aplicaciones de nextcloud. No he usado esta aplicación, deberían ser como instantáneas.

Restaurar archivos individuales
Siempre que no utilice cifrado y utilice solo cuentas locales, los datos del usuario se almacenan en el nextcloud/data/usernamedirectorio. Si está conectado al directorio activo/openldap, el directorio es nextcloud/data/uuidel uuid que podría resolverse en la base de datos. ( SELECT ldap_dn FROM oc_ldap_user_mapping WHERE owncloud_name='$U_ID')
Los archivos pueden restaurarse manualmente desde el directorio de usuario respaldado y copiarse en el directorio de datos del usuario actual. Asegúrese de escanear todos los archivos occ files:scandespués.

Si el cifrado está habilitado: :) buena suerte.

información relacionada