Está en la página 1de 8

Usar Dropbox como solución de Backups para Bases de Datos (y

otros)
Por Pepe Huerta, jahuerta@neutralidadsi.org
(el documento está abierto para colaboraciones!, editen con libertad pero responsablemente!.)

(Por favor Respeto con el Archivo es un Buen Tutorial.)

Para este tutorial usamos como ejemplo:

● Cuenta en Dropbox.com.
● Linux, cualquier distribución, en este caso, usamos Debian (servidor que mantiene las
bases de datos).
● Dropbox para linux.
● Optativo: Un segundo equipo (puede ser nuestro computador en casa).

1. Setup

En Debian (o cualquier otra distribución) deberemos instalar la versión de dropbox según


corresponda a nuestra arquitectura.

La propia Wiki de Dropbox tiene un tutorial sobre COMO instalar Dropbox en un ambiente de
consola de texto:

http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall

Setup process
1. Log in to your Linux server so you obtain a shell prompt, and change to your home directory.
$ cd
2. Use wget to download the Dropbox Linux client, using either the link to the latest stable version (32-bit
or 64-bit), or go to the forums and find a link to the latest forums version.
# this example is the 32-bit build of the client
$ wget -O dropbox.tar.gz
http://www.dropbox.com/download/?plat=lnx.x86_64
http://www.dropbox.com/download?plat=lnx.x86_64
3a. Use tar to extract the client. It will be placed in a folder .dropbox-dist/ which may be in the folder ~/ or
may be in the folder / (or possibly elsewhere).
$ tar -zxof dropbox.tar.gz
3b. Move the folder and all its contents to .dropbox-dist to ~/.dropbox-dist if neccessary.
$ mv .dropbox-dist ~
4. Run dropboxd as a background process, using the following command:
$ ~/.dropbox-dist/dropboxd &
5. dropboxd should be running for a few seconds - long enough to contact the Dropbox servers and
construct the initial pieces of data required for the client to run. The most important of these for
identification of the client is the host id, a 128-bit number uniquely assigned to every instance of the client.

-- Instrucciones de instalación paso a paso en una máquina Debian (ejemplo)

Obtener el binario de Dropbox para Linux, de 32 o 64 bits dependiendo de nuestra arquitectura.


En este ejemplo, usaremos la versión de 32bits.

~# cd /root/
~# wget http://dl-web.dropbox.com/u/17/dropbox-lnx.x86-0.7.110.tar.gz
[...]
13,121,925 2.75M/s in 4.6s
2010-08-09 22:41:34 (2.75 MB/s) - `dropbox-lnx.x86-0.7.110.tar.gz' saved [13121925/13121925]
~# gzip -d dropbox-lnx.x86-0.7.110.tar.gz
~# tar -xf dropbox-lnx.x86-0.7.110.tar
~# cd .dropbox-dist/ [el PUNTO inicial se debe a que es un directorio oculto]
~# chmod +x dropboxd
~# ./dropboxd
(ejecutar el instalador... con eso queda todo instalado imprimiendo el HOST ID)

NOTA: Normalmente, cuando dropbox comienza a imprimir el HOST ID, es imposible


matar el proceso con Control + C, por lo que recomiendo abrir otra TTL para matarlo
posteriormente.
NOTA 2: Ver script init.d al pie de este documento. Con el podrás iniciar dropbox en el
booteo y, además detenerlo o iniciarlo vía init.d
--
Sin profundizar más en esa instalación, no debería costar en mucho el poder potenciar nuestro
server con Dropbox.

Una vez instalado, debemos linkear este servidor con nuestra cuenta de Dropbox, para esto - y
una vez finalizada la instalación del binario - se empieza a imprimir en la consola un Host ID de
128 Bits (un hash, un identificador del server o una clave.. tomelo como quiera). [... alguien que
agregue una foto!! ..]

Dicha clave (que es una URL) deberás copiarla y pegarla en tu computador estando logueado
a la cuenta Dropbox que usaremos para los backups. Al ingresar el Host ID en nuestra
cuenta, el servidor quedará linkeado a dicha cuenta de Dropbox para sincronizar los contenidos
entre cualquier computador que la utilice.

La página de “My Computers” en el panel de Dropbox, debe reportar cuales son los
computadores linkeados a la cuenta, incluído nuestro server que acabamos de agregar a la
cuenta.

Una vez instalado y linkeado, Dropbox comenzará a descargar los contenidos del directorio
Dropbox/ en nuestro server, si estás ejecutando DB como root, será en la ruta /root/Dropbox/

En caso de utilizar otro usuario, se descargará en /home/<usuario>/Dropbox

Cuando los directorios estén sincronizados, estaremos en condiciones de comenzar a utilizar


Dropbox para nuestros backups.

Documentación extra para la instalación y aplicación de dropbox en linux:


- Guía:
http://wiki.dropbox.com/TipsAndTricks/TextBasedLinuxInstall
- DBUpdate - Actualizador de DB por consola (forum build):
http://forums.dropbox.com/topic.php?id=12153&replies=118#post-77227

2. Realizando Backups

Hay distintas formas para realizar backups de bases de datos, nosotros utilizaremos un script
simple para obtener un dump, comprimir y mover a nuestro dropbox. (usaremos bzip2 como
compresor, pero puede ser gzip o tar perfectamente)

Primero, crear un directorio “Backups” en la raíz de nuestro Dropbox:


mkdir /root/Dropbox/Backups

En /root/, crear db-backup.sh


cd /root/
vim db-backup.sh

El contenido:

#!/bin/bash
dt=`date +%d-%B-%Y__%H_%M_%S`
mysqldump --user=USUARIO --password=CLAVE --opt BASE DE DATOS > /root/backup-db-dropbox.sql
bzip2 -9 /root/bkps/backup-db-dropbox.sql
cp /root/backup-db-dropbox.sql.bz2 /root/Dropbox/Backups -f
rm /root/backup-db-dropbox.sql*

Guardar el archivo, luego, dar permisos de ejecución:


chmod +x db-backup.sh

Podemos probar nuestro script ejecutandolo una vez (./db-backup.sh) y revisar si el archivo se
crea, comprime y se mueve exitosamente al directorio de destino.

Una vez que el archivo es movido sobre la ubicación de nuestro dropbox, el server lo subirá y
sincronizará en “la nube”.

3. Automatizando

Lo más simple para automatizar este proceso es crear un cron job para el usuario:
http://kevin.vanzonneveld.net/techblog/article/schedule_tasks_on_linux_using_crontab/

Logueado con el mismo usuario, en este caso con root:


crontab -e

Agregar:
# m h dom mon dow command
30 05 * * * /root/db-backup.sh >/dev/null 2>&1

Con esto, nuestro script de backups podrá correr todos los días a las 5:30 AM, y dado que en el
script forzamos a sobreescribir el archivo antiguo con la nueva copia de nuestro backup (cp
/root/backup-db-dropbox.sql.bz2 /root/Dropbox/Backups -f), tendremos solo un archivo en nuestro dropbox,
ahorrando espacio y utilizando el control de versiones de Dropbox.com para poder restaurar
versiones más antiguas del respaldo.
En las fotos, estamos restaurando una versión del backup con tres días de antiguedad.
El resto, es solo aprovechar las funciones normales del dropbox y usar la imaginación para
respaldar nuestros datos.

Como experiencia, no recomiendo respaldar directorios que incluyan MILES de archivos, ya


que la sincronización tiende a tupirse, siempre es mejor meter todo en un tarball o algo similar.

Saludos a Todos.

Pepe Huerta
jahuerta@neutralidadsi.org
9/Agosto/2010
-------------------------------------------

Script para init.d en Debian

El script te permitirá iniciar, detener y, además, revisar el estado de dropbox a través de init.d.
También se adjuntan instrucciones para iniciar dropbox en la secuencia de booteo. Antes de
crear este script, recomendamos detener dropbox (killall dropbox o killall dropboxd)
$ cd /etc/init.d
$ vim dropbox

Ingresar el siguiente contenido:

NOTA: en la linea DROPBOX_USERS, reemplazar “user1 user2” por los usuarios que
utilizarán dropbox en el servidor. Siguiendo con la linea de nuestros ejemplos con el
usuario root, debería quedar así: DROPBOX_USERS=”root”

# dropbox service

DROPBOX_USERS="root"

DAEMON=.dropbox-dist/dropbox

start() {
echo "Starting dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d: -f6`
if [ -x $HOMEDIR/$DAEMON ]; then
HOME="$HOMEDIR" start-stop-daemon -b -o -c $dbuser -S -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}

stop() {
echo "Stopping dropbox..."
for dbuser in $DROPBOX_USERS; do
HOMEDIR=`getent passwd $dbuser | cut -d:
if [ -x $HOMEDIR/$DAEMON ]; then
start-stop-daemon -o -c $dbuser -K -u $dbuser -x $HOMEDIR/$DAEMON
fi
done
}

status() {
for dbuser in $DROPBOX_USERS; do
dbpid=`pgrep -u $dbuser dropbox`
if [ -z $dbpid ] ; then
echo "dropboxd for USER $dbuser: not running."
else
echo "dropboxd for USER $dbuser: running (pid $dbpid)"
fi
done
}

case "$1" in
start)
start
;;

stop)
stop
;;

restart|reload|force-reload)
stop
start
;;

status)
status
;;

*)
echo "Usage: /etc/init.d/dropbox {start|stop|reload|force-reload|restart|status}"
exit 1

esac

exit 0

Guardar y luego, dar permisos de ejecución:

$ chmod +x /etc/init.d/dropbox

A continuación, agregar el script como servicio a RC:

$ update-rc.d dropbox defaults

Finalmente, revisar el estado de dropbox:

$ /etc/init.d/dropbox status

... y luego, iniciar el servicio:

$ /etc/init.d/dropbox start

Eso es todo!

También podría gustarte