Usar un script para hacer una copia de seguridad de tu sitio web y tu base de datos en DreamObjects

Generalidades

Con un simple script de shell, puedes automatizar las copias de seguridad de sitios web y bases de datos en DreamObjects. Este script hace lo siguiente:

  • vuelca una base de datos en el formato "mm-dd-yyyy_db-name_.sql" en el directorio /home/username/backup/example.com
  • carga la base de datos en tu bucket DreamObjects
  • comprime el directorio de tu sitio web en el formato "mm-dd-yyyy_example.com.zip" en el directorio /home/username/backup/example.com
  • carga el archivo .zip del sitio web en DreamObjects
  • elimina la base de datos y el archivo zip del sitio web en el servidor web para ahorrar espacio

Paso 1 — Configurar tu bucket de DreamObjects

  1. Ve el siguiente artículo para crear una cuenta de DreamObjects, agregar un usuario y crear un bucket.
    01_DHO_Panel_Upload.fw.png
  2. En la página de DreamObjects, ubica el usuario que contiene el bucket con el que deseas trabajar, luego haz clic en el botón View Objects.

    Los buckets disponibles aparecen en la siguiente ventana:

    02_DHO_Panel_Upload.fw.png
  3. Selecciona el bucket al que deseas cargar objetos.
  4. Haz clic en el enlace Add Folder y añade un nuevo directorio llamado backups. Esta carpeta se utilizará para cargar las copias de seguridad de tu sitio web y de tu base de datos.

Paso 2 — Crear el script del backup

  1. Inicia sesión en tu servidor a través de SSH.
  2. Crea un nuevo directorio llamado backup en el directorio raíz de tu usuario.
    [server]$ mkdir ~/backup
  3. En este directorio, crea un archivo llamado example.com-backup.sh. Asegúrate de cambiar example.com al sitio del que estás haciendo una copia de seguridad.
    [server]$ touch ~/backup/example.com-backup.sh
  4. En el siguiente script, debes completar las primeras seis variables que están resaltadas:
    • domains — El script usa este campo para crear un directorio bajo $HOME/backups/. Este es el directorio que almacenará tu base de datos y los archivos del sitio web, así que asegúrate de que tenga el mismo nombre que tu nombre de dominio.
    • sqldbs — El nombre de tu base de datos.
    • opath — El directorio en el que deseas realizar la copia de seguridad
    • mysqlhost — Tu hostname de base de datos MySQL.
    • username — Tu nombre de usuario MySQL.
    • password — Tu contraseña MySQL.
    • webdir — Esta es la ruta a tu directorio web. Cambia el nombre de dominio a tu sitio
    • bucket-name — El nombre del bucket de DreamObjects en el que realizas la copia de seguridad.
    • example.com-backup.sh — Este es el nombre de tu archivo de copia de seguridad en tu directorio $HOME/backup.
  5. Agrega el siguiente código a este archivo. Asegúrate de actualizar cualquier código que esté resaltado
    #!/bin/bash

    domain=( example.com ) sqldb=( your-db-name ) opath=$HOME/backup/ mysqlhost=mysql.example.com username=db-username password=db-user-password
    webdir=$HOME/example.com today=$(date +%m-%d-%Y) for (( i = 0; i < ${#domain[@]}; i++)) do cpath=$opath${domain[$i]} if [ -d $cpath ] then filler="just some action to prevent syntax error" else echo Creating $cpath mkdir -p $cpath fi mysqldump -c -h $mysqlhost --user $username --password=$password ${sqldb[$i]} > ${cpath}/"$today"_${sqldb[$i]}.sql zip -r ${cpath}/"$today"_"$domain".zip $webdir done #use aws-cli to upload to DreamObjects aws --endpoint-url https://objects-us-east-1.dream.io s3 sync $opath s3://bucket-name/backups/ --exclude "$opath"example.com-backup.sh #delete backup from web server find $HOME/backup/* -type d -exec rm -rf {} \; 2> /dev/null

El código anterior hace una copia de seguridad de los archivos de tu base de datos y sitio web en tu bucket DreamObjects dentro de una carpeta llamada /backups.

Paso 3 — Instala aws-cli

aws-cli es un cliente de línea de comandos que te permite administrar tus datos de DreamObjects. La mayoría de los servidores de DreamHost lo han instalado de forma predeterminada, por lo que no hay nada que instalar. Sin embargo, si tu servidor está ejecutando una versión anterior de Ubuntu 14, deberás instalar esto manualmente. 

Consulta el siguiente artículo para obtener instrucciones sobre cómo comprobar si necesitas instalarlo.

Paso 4 — Ejecutar el archivo

Ejecutarlo manualmente

Después de activar tu entorno virtual, puedes ejecutar el archivo manualmente con el siguiente comando:

(my-user-bucket) sh ~/backup/example.com-backup.sh

Ejecutándolo con un cron job

También puedes crear un cron job para ejecutar esto automáticamente en tiempos específicos. Para hacer esto, crea un nuevo archivo llamado algo así como websitebackup.sh con el siguiente código.

Asegúrare de cambiar example.com-backup.sh por el nombre de tu archivo de respaldo.

#!/bin/bash
sh ~/backup/example.com-backup.sh

Ve el artículo ¿Cómo creo un cron job? para crear tu cron job. En el cuadro de texto, ingresa el siguiente comando (cambia el nombre de usuario a tu usuario de Shell).

/bin/bash /home/username/websitebackup.sh

Si instalaste AWS en un virtualenv

Si tu servidor ejecuta Ubuntu 14, debes crear un virtualenv e instalar AWS manualmente como se detalla en el paso #3 arriba. Si es así, añade la línea source a tu cron job para activar tu virtualenv.

Asegúrare de cambiar my-user-bucket por el nombre de tu entorno virtual.

#!/bin/bash
source ~/my-user-bucket/bin/activate
sh ~/backup/example.com-backup.sh

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?