Cron para realizar backups remotos en Fileserve (OPCIONAL) en Linux

cron-para-realizar-backups-remotos-en-fileserve-en-linux

Con la finalidad de asegurarnos de mantener respaldos de los espacios de las cuentas del cPanel en Servidores externos al menor costo posible y en forma segura, podemos registrar una cuenta Premium en el servicio Fileserve.com. Este punto explica como realizar estos backups externos, sin embargo, le indicamos que Fileserve prohibe usar sus espacios para backups automáticos por lo que su cuenta podría ser eliminada sin derecho a reclamos. Mantenemos este punto en el curso porque explica los respaldos en servicios de almacenamiento remoto, para fines educativos.

Lo primero que hay que hacer es contratar una cuenta premium en www.fileserve.com.

Una vez creada la cuenta debemos ingresar por SSH en el servidor y ubicarnos en el directorio donde se encuentran los respaldos locales de las cuentas y ejecutar:

cd /backup/cpbackup/weekly/
nano respaldos.sh

Ahora debemos colocar en el archivo lo siguiente:


#!/bin/sh # Respalda los archivos de backup en la cuenta de Fileserve if (("`date +%w`" != "6")); then exit
else
cd /backup/cpbackup/weekly/
fecha=$(date +'%m.%d.%Y_%H-%M-%S_')
> remotos.ftp echo user USUARIO CLAVE
>> remotos.ftp echo mkdir ServerN
>> remotos.ftp echo cd ServerN
for i in `ls *.tar.gz`
do
ln -s $i "backup-$fecha$i"
>>remotos.ftp echo put "backup-$fecha$i"
done
>>remotos.ftp echo quit
ftp -n ftp.fileserve.com < remotos.ftp
echo > remotos.ftp
rm -f remotos.ftp
rm -f backup*
echo "Respaldos Externos realizados para el Servidor N"
fi
# Fin

Guardarlo y Salir del editor.

NOTA: Deben hacerse varios cambios en función del servidor correspondiente, como son:

Sustituir arriba el USUARIO y la CLAVE por los provistos por Fileserve
Sustituir la letra N en el Servidor N por el número que corresponda.
En función del día que se quiera ejecutar se debe colocar en el if el número correspondiente ” ejemplo: 0=Dom, 1=Lun, 2=Mar “¦ 6=Sab).
Sustituir la N en ServerN por el número que corresponda según el servidor de producción a respaldar de tal forma que los archivos sean guardados en la carpeta correspondiente.
Ahora debemos ejecutar:

chmod 700 respaldos.sh
Luego debemos crear el cron que ejecutará los respaldos remotos mensualmente, para ello ejecutamos:

crontab -e

Insertamos al final:

0 7 1-7 * 6 /backup/cpbackup/weekly/respaldos.sh

Guardamos y salimos.

En el caso anterior, el cron se ejecutará los primeros 7 días de cada mes y todos los sábados a las 7:00am, sin embargo, como lo que se quiere es que el script corra 1 vez al mes, por ejemplo solo el primer sábado del mes, es importante el condicional que se le colocó al script al inicio donde solo permite su ejecución si el día coincide con el deseado (ej. Sábado).

Es importante destacar que el cron lo debemos ejecutar un día diferente al día en que se hacen los backups programados del cpanel para evitar sobrecargas innecesarias.

A su vez, no debemos colocar la ejecución de los cron iguales en todos los servidores de producción ya que Fileserve causará una cola innecesaria. Lo mejor es colocarlos en horarios diferentes entre los servidores de producción (ej. Sáb 7am, Sáb 2pm, Sáb 7pm, Dom 7am, etc.).

Para finalizar reiniciamos el servicio crond y listo:

service crond restart

Todo lo anterior es para el caso de los servidores de producción. Ahora bien, para los servidores de desarrollo el script debe ubicarse en:

cd /respaldos/
nano respaldos.sh

Ahora debemos colocar en el archivo lo siguiente:

#!/bin/sh
# Respalda los archivos de backup en la cuenta de Fileserve
if (("`date +%w`" != "3")); then exit
else
cd /mnt/software/respaldos/
fecha=$(date +'%m.%d.%Y_%H-%M-%S_')
> /respaldos/remotos.ftp echo user USUARIO CONTRASEÑA
>> /respaldos/remotos.ftp echo mkdir Desarrollo
>> /respaldos/remotos.ftp echo cd Desarrollo
for i in `ls *.tar.gz`
do
ln -s $i "backup-$fecha$i"
>>/respaldos/remotos.ftp echo put "backup-$fecha$i"
done
>>/respaldos/remotos.ftp echo quit
ftp -n ftp.fileserve.com < /respaldos/remotos.ftp
echo > /respaldos/remotos.ftp
rm -f /respaldos/remotos.ftp
rm -f backup*
echo "Respaldos Externos realizados para el Servidor Desarrollo"
cd /mnt/software/respaldos/db/
> /respaldos/remotos.ftp echo user USUARIO CONTRASEÑA
>> /respaldos/remotos.ftp echo mkdir Desarrollo
>> /respaldos/remotos.ftp echo cd Desarrollo
for i in `ls *.sql`
do
tar -czf "$i.tar.gz" $i
done
for i in `ls *.tar.gz`
do
ln -s $i "backupdb-$fecha$i"
>>/respaldos/remotos.ftp echo put "backupdb-$fecha$i"
done
>>/respaldos/remotos.ftp echo quit
ftp -n ftp.fileserve.com < /respaldos/remotos.ftp
echo > /respaldos/remotos.ftp
rm -f /respaldos/remotos.ftp
rm -f backup*
rm -f *.tar.gz
echo "Respaldos Externos de BD realizados para el Servidor de Desarrollo"
fi
# Fin

Guardarlo y Salir del editor.

NOTA: Deben hacerse varios cambios en función del servidor correspondiente. El ejemplo anterior es para Dataserver. Los cambios a tomar en cuenta son:

  • Sustituir arriba el USUARIO y la CLAVE por los provistos por Fileserve
  • Sustituir el Servidor Dataserver por el nombre que corresponda, tanto para el echo como para la carpeta donde se guardarán los archivos (ej. Desarrollo1, Desarrollo2, etc.).
  • En función del día que se quiera ejecutar se debe colocar en el if el número correspondiente ” ejemplo: 0=Dom, 1=Lun, 2=Mar “¦ 6=Sab).
  • La carpeta de los respaldos en Dataserver es /mnt/software/respaldos/ sin embargo en los servidores de Desarrollo es /backup/. En ambos casos la carpeta que contiene la base de datos se denomina db y esta dentro de la carpeta del respaldo correspondiente.
    Ahora debemos ejecutar:
chmod 700 respaldos.sh

Luego debemos crear el cron que ejecutará los respaldos remotos mensualmente, para ello ejecutamos:

crontab -e

Insertamos al final:

0 19 1-7 * 3 /respaldos/ respaldos.sh

Guardamos y salimos.

En el caso anterior, el cron se ejecutará los primeros 7 días de cada mes y todos los Miércoles a las 7:00pm, sin embargo, como lo que se quiere es que el script corra 1 vez al mes, por ejemplo solo el primer Lunes del mes, es importante el condicional que se le colocó al script al inicio donde solo permite su ejecución si el día coincide con el deseado (ej. Miércoles).

A su vez, no debemos colocar la ejecución de los cron iguales en todos los servidores de desarrollo ya que Fileserve causará una cola innecesaria. Lo mejor es colocarlos en horarios diferentes entre los servidores de Desarrollo (ej. Lunes 7pm, Martes 7pm, Miércoles 7pm, etc.). Debe ser en días laborables y de noche para que no congestionen la conexión lenta que nos proveen localmente.

Para finalizar reiniciamos el servicio crond y listo:

service crond restart
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *