En betabeers hacemos copias de seguridad de la base de datos mediante un cron que se ejecuta todos los viernes por la media noche.
El cron hace un backup de la base de datos mysql, comprime el fichero a .tgz y lo sube a una cuenta de dropbox.
Requisitos
- Tener una cuenta en dropbox
- Tener permisos de administrador en el servidor
- Tener instalado CURL en el servidor
Pasos a seguir
1- Instalar CURL
2- Crear una app en dropbox
3- Configurar bash script droptobox
4- Dar permisos a la app en dropbox
5- Configurar bash script para hacer mysqldump y enviar a dropbox
6- Configurar cronjob
1- Instalar CURL
Ejecuta en la terminal:
#sudo apt-get install curl
Rellena los siguientes campos:
Add type: API
App name:
Description:
Access: Full dropbox
3- Configurar bash script droptobox
Ejecuta en la terminal:
#cd /tmp
#wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
#sudo cp dropbox_uploader.sh /usr/local/bin/droptobox
#chmod +x /usr/local/bin/droptobox
#droptobox
4- Dar permisos a la app en dropbox
Al usar por primera vez el comando droptobox, te preguntará por un app key y app secret, los puedes ver en el pefil de la app en dropbox.
El asistente a continuación te mostrará una URL que tendremos que copiar y pegar en el navegador, al abrir el enlace damos permisos a la app de dropbox para administrar la cuenta.
5- Configurar bash script para hacer mysqldump y enviar a dropbox
Ejecuta en terminal:
nano /usr/local/bin/db_backup
Pega el siguiente contenido y editalo con los datos de tu mysql:
# configuración
DROPBOX_DIR="Backups" # carpeta de destino en dropbox
PORT="" # puerto mysql
HOST="" # ip del servidor mysql
DATABASE="" # nombre de la base de datos
USER="" # usuario de la base de datos
PASS="" # contraseña del usuario de la base de datos
# a partir de aqui no hace falta editar
BACKUP_DST="/tmp"
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.sql"
DESTFILE2="$BACKUP_DST/$NOW.tgz"
mysqldump -P "$PORT" -h "$HOST" -u "$USER" -p "$DATABASE" --password="$PASS" > "$DESTFILE"
tar cfz "$DESTFILE2" "$DESTFILE"
droptobox upload "$DESTFILE2" "$DROPBOX_DIR/$NOW.tgz"
rm -f "$DESTFILE"
rm -f "$DESTFILE2"
Guarda el documento CTRL+X y ENTER
6- Configura un cronjob
Ejecuta en terminal:
#crontab -e
Si quieres hacer un backup cada semana, los viernes a las 23:00, añade la siguiente linea:
0 23 * * 5 /usr/local/bin/db_backup
El cron hace un backup de la base de datos mysql, comprime el fichero a .tgz y lo sube a una cuenta de dropbox.
Requisitos
- Tener una cuenta en dropbox
- Tener permisos de administrador en el servidor
- Tener instalado CURL en el servidor
Pasos a seguir
1- Instalar CURL
2- Crear una app en dropbox
3- Configurar bash script droptobox
4- Dar permisos a la app en dropbox
5- Configurar bash script para hacer mysqldump y enviar a dropbox
6- Configurar cronjob
1- Instalar CURL
Ejecuta en la terminal:
#sudo apt-get install curl
2- Crear una app en dropbox
Para crear una app como desarrollador en dropbox entra en https://www.dropbox.com/developers/apps
Rellena los siguientes campos:
Add type: API
App name:
Description:
Access: Full dropbox
3- Configurar bash script droptobox
Ejecuta en la terminal:
#cd /tmp
#wget https://raw.github.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh
#sudo cp dropbox_uploader.sh /usr/local/bin/droptobox
#chmod +x /usr/local/bin/droptobox
#droptobox
4- Dar permisos a la app en dropbox
Al usar por primera vez el comando droptobox, te preguntará por un app key y app secret, los puedes ver en el pefil de la app en dropbox.
El asistente a continuación te mostrará una URL que tendremos que copiar y pegar en el navegador, al abrir el enlace damos permisos a la app de dropbox para administrar la cuenta.
5- Configurar bash script para hacer mysqldump y enviar a dropbox
Ejecuta en terminal:
nano /usr/local/bin/db_backup
Pega el siguiente contenido y editalo con los datos de tu mysql:
# configuración
DROPBOX_DIR="Backups" # carpeta de destino en dropbox
PORT="" # puerto mysql
HOST="" # ip del servidor mysql
DATABASE="" # nombre de la base de datos
USER="" # usuario de la base de datos
PASS="" # contraseña del usuario de la base de datos
# a partir de aqui no hace falta editar
BACKUP_DST="/tmp"
NOW=$(date +"%Y.%m.%d")
DESTFILE="$BACKUP_DST/$NOW.sql"
DESTFILE2="$BACKUP_DST/$NOW.tgz"
mysqldump -P "$PORT" -h "$HOST" -u "$USER" -p "$DATABASE" --password="$PASS" > "$DESTFILE"
tar cfz "$DESTFILE2" "$DESTFILE"
droptobox upload "$DESTFILE2" "$DROPBOX_DIR/$NOW.tgz"
rm -f "$DESTFILE"
rm -f "$DESTFILE2"
Guarda el documento CTRL+X y ENTER
6- Configura un cronjob
Ejecuta en terminal:
#crontab -e
Si quieres hacer un backup cada semana, los viernes a las 23:00, añade la siguiente linea:
0 23 * * 5 /usr/local/bin/db_backup
En esta página encontrarás más información para configurar un crontab
Guarda el documento CTRL+X y ENTER
Creditos
- Andrea Fabrizi por bash script droptobox
- Pal Bakulich por el bash script original
13/11/2013 13:02
Yo tengo uno que hace backup de ficheros y mysql. Los comprime y los envia por FTP. Luego el FTP borra los ficheros mas antiguos de XX ;)
http://garridodiaz.com/ftp-backup-for-mysql-and-files/
13/11/2013 15:28
Más info: http://www.dropboxwiki.com/tips-and-tricks/install-dropbox-in-an-entirely-text-based-linux-environment