Respaldos - HostingChile/nextcloud GitHub Wiki

Respaldar

Se debe respaldar la carpeta /home/nextcloud completa ya que en esta se guarda la información de las bases de datos, los archivos y configuraciones usados en la instalación, además del estado actual del repositorio usado para su instalación.

Respaldar usando R1Soft

Una vez instalado R1Soft se debe crear un enlace simbólico con ln -s /home/nextcloud/data/database/ /var/lib/mysql y asegurarse de respaldar la ruta /var/lib/mysql. Además se debe agregar un archivo docker-compose custom para abrir el puerto 3306.

Al configurar el respaldo de MySQL puede aparecer un mensaje con una advertencia diciendo que la base de datos está en un dispositivo que no ha sido seleccionado para realizar copia de seguridad. Si aparece, se debe verificar que se respalda el enlace simbólico /var/lib/mysql e ignorar el mensaje.

Restaurar toda la base de datos respaldada con docker-compose.dbbackup.yml

Hay que restaurar los archivos indicados en el punto anterior. Luego tener en cuenta las siguientes consideraciones:

  • Confirmar que el dueño de los archivos de Nextcloud ubicados en /home/nextcloud/data/nextcloud tienen UID 33 ejecutando chown -R 33 data/nextcloud/.

  • Para recuperar la base de datos se usa el contenedor database-backup:

    • Ver qué respaldos hay disponibles con docker-compose exec database-backup ls /backup
    • Restaurar alguno con docker-compose exec database-backup /restore.sh /backup/<DUMP A USAR>. Si se quiere usaer el último disponible, se puede usar docker-compose exec database-backup /restore.sh /backup/latest.nextcloud.sql.gz.

    Importante: En caso de usar el servicio docker-compose.dbbackup.yml los dumps de la base de datos se hacen con un cron independiente al sistema que se use para respaldar la información, pueden haber inconsistencias entre lo que está en el respaldo de la base de datos y lo que realmente está en Nextcloud. En caso de que después del respaldo aparezca un mensaje diciendo que se debe actualizar la aplicación, se den ejecutar los comandos docker-compose exec --user www-data nextcloud php occ upgrade para actualizarla. Luego hay que re-escanear los archivos que están alojados para que los asigne a los usuarios correctos con el comando docker-compose exec --user www-data nextcloud php occ files:scan --all.

Restaurar algunas tablas de la base de datos respaldada con docker-compose.dbbackup.yml

Se deben levantar los servicios definidos en docker-compose.dbrestore.yml. Esto crea una nueva instancia MySQL y un phpMyAdmin para trabajar con el proceso de restauración.

  • Agregar docker-compose.dbrestore.yml a ~/.bash_profile y volver a cargar este archivo con source ~/.bash_profile
  • Poner Nextcloud en modo en mantención con docker-compose exec --user www-data nextcloud php occ maintenance:mode --on
  • Importar el respaldo que se quiera usar con gunzip < data/db_backup/<RESPALDO>.nextcloud.sql.gz | docker-compose exec -T dbrestore mysql
  • Definir las tablas que se quieren restaurar con docker-compose exec dbrestore sh -c 'mysqldump nextcloud $(mysql -D nextcloud -Bse "SHOW TABLES LIKE \"<PATRÓN DE BÚSQUEDA>\"")' > partial_dump.sql
  • Restaurar las tablas con cat partial_dump.sql | docker-compose exec -T database mysql -unextcloud -p<PASSWORD> nextcloud
  • Quitar el modo en mantención con docker-compose exec --user www-data nextcloud php occ maintenance:mode --off
  • Quitar docker-compose.dbrestore.yml de ~/.bash_profile y volver a cargar este archivo con source ~/.bash_profile
  • Eliminar archivos, imágenes, contenedores y volúmenes que ya no se usan con docker-compose up -d --remove-orphans && docker system prune -af && rm -f partial_dump.sql

Migrar

Si se quiere mover todo el sistema a un nuevo servidor se pueden seguir los siguientes pasos:

  1. Dejar Nextcloud en modo en mantención con docker-compose exec --user www-data nextcloud php maintenance:mode --on
  2. Instalar el sistema en el nuevo servidor siguiendo las instrucciones de instalación, pero omitiendo el último paso (no levantar el sistema).
  3. Copiar las carpetas /var/lib/docker/volumes/nextcloud_*, /home/nextcloud/data/y /home/nextcloud/custom/ al nuevo servidor.
  4. Terminar la instalación
⚠️ **GitHub.com Fallback** ⚠️