[How-to] Backup script. Directorios y BBDD MySql a FTP Bueno, este es un script que encontré y que me es realmente util.
Simplemente, hace un volcado de los directorios que le especifiques, los comprime y los envia a un FTP. Lo mismo con las bases de datos MySql, hace un volcado de todas, las comprime y las envia individualmente al FTP.
Básicamente, hace una copia completa el dia de la semana que se especifique, y el resto hace copias incrementales (en todas incluye volcado de las BBDD).
Como funciona:
La estructura que crea en el FTP es la siguiente: /full/mm-dd-yy/ficheros del Full backup /incremental/mm-dd-yy/ficheros del Incremental backup
Consideraciones previas: Hay que tener instalado: • ncftp ftp client (para saber si esta instalado y donde “which ncftp”) • mysqldump command (para saber si esta instalado y donde “which mysqldump”) • GNU tar command (para saber si esta instalado y donde “which tar”)
Esta pensado para que use el directorio /backups. Creadlo (mkdir /backups).
Tambien se sobreentiende que teneis creado el usuario correspondiente en el servidor FTP de destino de los backups. Las rutas ”/backups/nombreservidor” pueden variar a vuestro gusto. Yo utilizo esta estructura por el simple hecho de tener todos los backups por servidor bien organizados.
Ahora, vamos a asumir las variables de ejemplo que debereis cambiar con vuestros datos:
DIRS=”/var/log /var/www/” Directorios de los que hacer backup. Para poner varios, separarlos con un espacio. FULLBACKUP=“Sun” El dia que se hará un backup completo (el resto, incremental). MUSER=“root” Usuario root para mysqld. (Para los que usan plesk, es admin) MPASS=“contraseñamysql” Contraseña de root. FTPD=”/backups/nombreservidor” FTPU=“usuarioFTP” FTPP=“passFTP” FTPS=“111.111.111.111” EMAILID=“tucorreo@servidor.com” Pues eso, el correo donde enviarte los posibles errores.
Cita: #!/bin/sh # System + MySQL backup script # Full backup day - Sun (rest of the day do incremental backup) # Copyright © 2005-2006 nixCraft <http://www.cyberciti.biz/fb/> # This script is licensed under GNU GPL version 2.0 or above # Automatically generated by http://bash.cyberciti.biz/backup/wizard-ftp-script.php # ———————————————————————
### System Setup ### DIRS=”/var/log /var/www/” BACKUP=/backups/backup.$$ NOW=$(date +”%d-%m-%Y”) INCFILE=”/backups/tar-inc-backup.dat” DAY=$(date +”%a”) FULLBACKUP=“Sun”
### MySQL Setup ### MUSER=“root” MPASS=“contraseñamysql” MHOST=“localhost” MYSQL=“$(which mysql)” MYSQLDUMP=“$(which mysqldump)” GZIP=“$(which gzip)”
### FTP server Setup ### FTPD=”/backups/nombreservidor/incremental” FTPU=“usuarioFTP” FTPP=“passFTP” FTPS=“111.111.111.111” NCFTP=“$(which ncftpput)”
### Other stuff ### EMAILID=“tucorreo@servidor.com”
### Start Backup for file system ### [ ! -d $BACKUP ] && mkdir -p $BACKUP || :
### See if we want to make a full backup ### if [ “$DAY” == “$FULLBACKUP” ]; then FTPD=”/backups/nombreservidor/full” FILE=“fs-full-$NOW.tar.gz” tar -zcvf $BACKUP/$FILE $DIRS else i=$(date +”%Hh%Mm%Ss”) FILE=“fs-i-$NOW-$i.tar.gz” tar -g $INCFILE -zcvf $BACKUP/$FILE $DIRS fi
### Start MySQL Backup ### # Get all databases name DBS=“$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')” for db in $DBS do FILE=$BACKUP/mysql-$db.$NOW-$(date +”%Hh%Mm%Ss”).gz $MYSQLDUMP -u $MUSER -h $MHOST -p$MPASS $db | $GZIP -9 > $FILE done
### Dump backup using FTP ### #Start FTP backup using ncftp ncftp -u”$FTPU” -p”$FTPP” $FTPS«EOF mkdir $FTPD mkdir $FTPD/$NOW cd $FTPD/$NOW lcd $BACKUP mput * quit EOF
### Find out if ftp backup failed or not ### if [ “$?” == “0” ]; then rm -f $BACKUP/* else T=/tmp/backup.fail echo “Date: $(date)”>$T echo “Hostname: $(hostname)” »$T echo “Backup failed” »$T mail -s “BACKUP FAILED” “$EMAILID” <$T rm -f $T fi Ponemos el codigo en, por ejemplo, /root/ftpbackup.sh Para comprovar que funciona, desde /root/ ejecutamos: ./ftpbackup.sh
Ojo porque la primera copia que haga será completa, sea o no el dia indicado (es incremental, pero como todavia no teniamos nada… se hace completa).
Os recomiendo provar antes con un directorio pequeño, para comprovar que funciona. Por ejemplo, con /etc/.
Una vez comprovemos que funciona, ya solo nos resta crear un cronjob para automatizarlo ;)
Cita: 15 4 * * * /root/ftpbackup.sh >/dev/null 2>&1 Fuente: www.cyberciti.biz Aqui teneis un generador automático. Ojo a los que useis este generador automático. Yo he hecho algun cambio para que me funcione correctamente con un FTP montado sobre windows… ya que el original me daba problemas con el nombre de los ficheros comprimidos de las BBDD debido al formato de la fecha.
Como siempre, no me hago responsable de nada de lo que pueda pasar. Si no estas seguro de lo que haces, mejor no hagas nada hasta tenerlo claro La iglesia que mas ilumina… ES LA QUE ARDE!!! Última edición por MrTeck; 20-mar-2007 a las 14:00. Responder Citando MrTeck Ver Perfil Enviar un mensaje privado a MrTeck Buscar todos los Mensajes de MrTeck #2 Antiguo 20-mar-2007, 14:10 Avatar de Doctor Doctor Doctor está desconectado Administrador Web Hosting Hispano Fecha de Ingreso: septiembre-2004 Ubicación: España - USA Mensajes: 2.515 Gracias Mr Teck, script muy interesante si señor… CEO y Fundador de WHH
Director Gerente Copernico Networks SL www.copernico.es