Si ejecuta una instancia del popular Data Cloud NextCloud, probablemente también desee una forma de hacer una copia de seguridad de sus datos. Hoy le muestro cómo hacer una copia de seguridad de NextCloud y cómo mover sus archivos a otro servidor. Haremos esto de la manera más fácil posible, sin deduplicación de datos, sin copia de seguridad incremental, simplemente creando un archivo tar.gz de nuestros datos más importantes y muévalos al servidor de respaldo, sobrescribiendo el existente, usando Cron. Te daré una opción que no sobrescribe la copia de seguridad existente, sino que también crea cada copia de forma individual con fechas.
Veamos primero nuestro escenario.
El escenario
NextCloudServer =Nuestro servidor NextCloud, obviamente...
BackupServer =Nuestro servidor de respaldo.
Que queremos lograr? Queremos crear copias de seguridad en NextCloudServer y moverlas a nuestro BackupServer. Para ambos servidores, usamos Ubuntu 16.04 LTS en este ejemplo.
Entonces, ¿por dónde empezar? Primero debemos montar nuestra carpeta BackupServer en nuestro servidor NextCloud.
Supongamos que nuestro servidor de copia de seguridad tiene una carpeta llamada "copias de seguridad", que, por supuesto, debe crear en su servidor de copia de seguridad.
Así que supongamos que la ruta a nuestro BackupServer, incluida la carpeta de copia de seguridad, es:
//BackupServer.com/backups
Paso 1:configuración de NextCloud en modo de mantenimiento
Para garantizar la integridad de los datos, primero configuraremos NextCloud en modo de mantenimiento. Esto garantiza que nadie esté trabajando activamente en NextCloud y reduce el riesgo de copias de seguridad corruptas.
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – on
Paso 2:Montaje del servidor de copia de seguridad
En su NextCloudServer cree un nuevo directorio. Puedes crearlo donde quieras, para este ejemplo, usamos lo siguiente:
mkdir /mnt/cifs/backups/nextcloud
Para poder montar recursos compartidos de CIFS, debe tener instalado cifs-utils, así que lo haremos primero.
apt-get update apt-get install cifs-utils
Montar manualmente la unidad
Primero, vamos a crear un archivo donde almacenaremos las credenciales en nuestro servidor de respaldo, por lo que no necesitamos usarlas como texto sin cifrar en nuestro script.
nano /etc/backup-credentials.txt
E ingrese sus credenciales como en el siguiente ejemplo:

Presiona CTRL+O para guardar y CTRL+X para salir.
Ahora necesitamos ajustar los permisos:
chmod 600 /etc/backup-credentials.txt

Después de esto, vamos a montar manualmente nuestro BackupServer.
mount -t cifs -o credentials=/etc/backup-crendetials.txt //BackupServer.com/backups /mnt/cifs/backups/nextcloud
Esto debería haber montado su carpeta //BackupServer.com/backups en /mnt/cifs/backups/nextcloud.
Puede verificar esto usando el siguiente comando:
df -h

Si reiniciara su NextCloudServer ahora, el montaje desaparecería, porque simplemente lo agregamos manualmente. Puede asignar automáticamente la unidad modificando el archivo /etc/fstab o simplemente incluir el comando de montaje desde arriba en su cronjob, que es la opción que elegiremos.
Elijo específicamente esta opción para evitar errores al reiniciar. Si la unidad no está disponible mientras se reinicia el servidor, es posible que ingrese al modo de emergencia y no se active. Hay formas de evitarlo mediante el uso de la opción nofail o noauto dentro del archivo fstab, pero no voy a repasar eso y elegiré la forma segura y fácil en su lugar. Si desea montar automáticamente su unidad modificando su archivo fstab, haga una búsqueda en Google sobre cómo hacerlo, pero sea inteligente al editar su archivo fstab, ya que puede evitar que su servidor arranque.
La elección es tuya.
Paso 3:crear las copias de seguridad
Muy bien, ahora que tenemos el montaje en su lugar, debemos averiguar qué archivos necesitamos respaldar.
Necesitamos hacer una copia de seguridad:
- El directorio principal, ubicado en /var/www/nextcloud
- El directorio de datos, ubicado de forma predeterminada en /var/www/nextcloud/data, pero se recomienda moverlo a una ubicación diferente que no esté dentro de la carpeta /www/, pero le mostraré cómo encontrarlo.
- La base de datos SQL
Copia de seguridad del directorio principal
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
Cuidado con el . al final, pertenece al comando. Eso es todo por eso.
Copia de seguridad del directorio de datos
Entonces, si su directorio de datos no se encuentra en su ubicación predeterminada, puede encontrarlo abriendo el archivo de configuración de nextcloud:
nano /var/www/nextcloud/config/config.php

Puede salir del archivo presionando CTRL+X.
Como puede ver, le muestra dónde se encuentra su directorio de datos. Así que usa esta ruta para hacer una copia de seguridad. También tenga en cuenta que está escrito qué tipo de base de datos usa su NextCloud, lo cual es relevante para el siguiente paso.
Muy bien, para hacer una copia de seguridad de su directorio de datos, ejecute:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data .
¡Ajuste la ruta /var/lib/nextcloud/data a su propia ruta! Cuidado con el . al final, pertenece al comando. Esto puede tomar mucho tiempo para terminar.
Copia de seguridad de la base de datos
Ok, entonces hay varias bases de datos que NextCloud puede usar, en este ejemplo asumimos que usamos MySQL. Si su instalación utiliza una base de datos diferente, debe buscar en Google el comando apropiado para la suya.
Para realizar este volcado de base de datos de forma segura sin solicitar una contraseña en un trabajo de Cron, primero debemos crear / o modificar el archivo .my.cnf ubicado en el directorio ~/.
nano ~/.my.cnf
Es posible que el archivo ya exista y tenga una entrada, dependiendo de la configuración de su servidor, no se preocupe, solo agregue las líneas debajo del texto existente.
[mysqldump] user = yourDBusername password = yourDBpassword

Presiona CTRL+O para guardar y CTRL+X para salir.
Si no conoce su nombre de usuario o contraseña de base de datos, está escrito dentro de su config.php que vimos anteriormente.
A continuación, debemos ajustar los permisos del archivo:
chmod 600 ~/.my.cnf
Ahora está listo para ejecutar un volcado de su base de datos sin ingresar una contraseña.
Puede ejecutar el volcado de SQL escribiendo:
mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql
Muy bien, ahora creamos una copia de seguridad de los 3 archivos más importantes. Verifiquemos si todo está ahí.
Hacemos un CD en nuestro directorio de respaldo y también ejecutaremos df -h nuevamente para verificar que el espacio realmente se llenó.
cd /mnt/cifs/backups/nextcloud df -h
Y efectivamente, lo hizo:

También podemos ejecutar ls dentro de nuestro directorio de copias de seguridad para verificar que los archivos están allí:
ls
Y eso es todo para el proceso de copia de seguridad. Ahora sabemos que todo funciona y ahora podemos automatizar todo el proceso usando Cron. Pero primero, debemos deshabilitar el modo de mantenimiento nuevamente.
Paso 4:Deshabilitar el modo de mantenimiento
Rápido y fácil:
cd /var/www/nextcloud sudo -u www-data php occ maintenance:mode – off
Paso 5:creación de un trabajo cron
Ahora básicamente creamos un trabajo Cron que ejecuta todos los comandos que ejecutamos manualmente en una fecha específica que establecemos. Debe aprender al menos los conceptos básicos del trabajo de Cron antes de intentar esto a ciegas. Tengo un tutoria corta e informativa l en eso, incluido un video .
Quiero que mi trabajo de Cron se ejecute todos los domingos, a partir de las 20:59.
Creamos un Cron modificando el archivo crontab:
crontab -e
Ahora sabemos que la copia de seguridad de nuestro directorio de datos será la que más tiempo llevará, por lo que ejecutaremos esto como el último comando.
59 20 * * 7 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – on 0 21 * * 7 mount -t cifs -o credentials=/etc/backup-credentials.txt //BackupServer/backup /mnt/cifs/backups/nextcloud 05 21 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud . 30 21 * * 7 mysqldump – single-transaction -h localhost -u nextcloud > /mnt/cifs/backups/nextcloud/NextcloudBackup_DB.sql 00 22 * * 7 tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_DataDir.tar.gz -C /var/lib/nextcloud/data . 00 02 * * 1 cd /var/www/nextcloud; sudo -u www-data php occ maintenance:mode – off
Repasemos rápidamente cada línea para eliminar la confusión.
- Todos los domingos 20:59: Activar el modo de mantenimiento
- Todos los domingos 21:00: Asegúrese de que nuestro BackupServer esté montado/vuélvalo a montar
- Todos los domingos 21:05: Haga una copia de seguridad de nuestro directorio de archivos NextCloud
- Todos los domingos 21:30: Copia de seguridad de nuestra base de datos SQL
- Todos los domingos 22:00: Copia de seguridad de nuestro gran directorio de datos
- Todos los lunes 02:00: Deshabilitar el modo de mantenimiento
Ahora puede ver que le di a la secuencia de comandos suficiente tiempo entre la última copia de seguridad del directorio de datos y el modo de mantenimiento.

CTRL+O para guardar y CTRL+X para salir.
Si desea validar que el script se estaba ejecutando, solo navegue a la carpeta de copia de seguridad el lunes y ejecútelo.
ls -la
Para verificar que los archivos tengan las fechas correctas.
Y eso es. Como dije, esta es una manera simple y fácil de crear una copia de seguridad. Si desea crear copias de seguridad incrementales o implementar la deduplicación de datos, debe buscar algo como Rsync o Borgbackup.
Como se prometió, la opción para crear archivos individuales sin sobrescribirlos se encuentra debajo.
Paso 6 (OPCIONAL) - Uso de nombres de archivos individuales
Es muy fácil hacerlo, pero tenga en cuenta que esto llenará el espacio de su disco duro bastante rápido dependiendo de la frecuencia con la que ejecute las copias de seguridad. Simplemente creamos nombres de archivo individuales agregando la opción de fecha en nuestro comando de copia de seguridad.
Entonces, en lugar de usar este comando:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir.tar.gz -C /var/www/nextcloud .
Usarías esto:
tar -cpzf /mnt/cifs/backups/nextcloud/NextcloudBackup_FileDir_`date +"%Y%m%d"`.tar.gz -C /var/www/nextcloud .
Esto agregaría la fecha al nombre del archivo con la fecha específica en que se creó.
Simplemente repita este paso para todas las demás copias de seguridad también. Te enseñaré cómo restaurar copias de seguridad en un tutorial futuro.