Respaldos - HostingChile/nextcloud GitHub Wiki
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.
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.
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 ejecutandochown -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 usardocker-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 comandosdocker-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 comandodocker-compose exec --user www-data nextcloud php occ files:scan --all
. - Ver qué respaldos hay disponibles con
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 consource ~/.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 consource ~/.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
Si se quiere mover todo el sistema a un nuevo servidor se pueden seguir los siguientes pasos:
- Dejar Nextcloud en modo en mantención con
docker-compose exec --user www-data nextcloud php maintenance:mode --on
- Instalar el sistema en el nuevo servidor siguiendo las instrucciones de instalación, pero omitiendo el último paso (no levantar el sistema).
- Copiar las carpetas
/var/lib/docker/volumes/nextcloud_*
,/home/nextcloud/data/
y/home/nextcloud/custom/
al nuevo servidor. - Terminar la instalación