zz_deprecated:ovh_backup_tools
This is an old revision of the document!
Table of Contents
Descripción
Conjunto de scripts para realizar un backup al ftp para backups que provee OVH.
Funcionamiento
El conjunto consta de 3 scripts, uno para ficheros, uno para MySQL (ya publicado) y otro que lanza ambos y los sube al servidor.
Petición de espacio
El espacio para backups se puede pedir a OVH mediante el Manager:
Servidor -> Servicios -> Gestión de Backups -> Backup FTP
Backup de Ficheros
El script es muy simple, al finalizar dejará un fichero comprimido conteniendo todos los directorios que son objetivo del backup:
- backup_files.sh
#!/bin/bash echo "Backup Script by dodger!" # This var contains the destination dir where all will be stored! # be sure to has full access to this dir! DESTINATION="/home/backup/files/" # Escluded files #EXCLUDEFILES=".[Bb][aA][kK] [cC]ache tmp" EXCLUDEFILES=".[Bb][aA][kK] tmp" EXCLUDEFILE="/tmp/excludefile.tmp" # date SHOT! MYDATE=`date +%Y%m%d` SERVERNAME=`uname -a | awk '{ print $2 }'` BACKUPFILE=$DESTINATION"/"$SERVERNAME"_"$MYDATE".tar.gz" LOGFILE=$DESTINATION"/"$SERVERNAME"_"$MYDATE".log" EXCLUDED=$DESTINATION"/"$SERVERNAME"_"$MYDATE".excluded" # this var contains all the desired backed-up dirs all in 1 line separated by spaces # example: "/etc /home /my/preferred/dir" BACKUPDIRS="$(dirname $0)/$(basename $0 .sh).dirs" # chown and chmod permission for files CHOWN="root:admins" CHMOD="440" rm -f $EXCLUDEFILE 2>> $LOGFILE for i in $(cat $BACKUPDIRS) do echo $i for j in $EXCLUDEFILES do find $i -name "*$j*" >> $EXCLUDEFILE done done echo "Backing up your selected dirs ($BACKUPDIRS), this will take a while" echo "file will be: $BACKUPFILE" echo "log will be: $LOGFILE" echo "Taring" for i in $(cat $BACKUPDIRS) do if [[ "$AUXDIR" ]] then AUXDIR="$AUXDIR $i" else AUXDIR="$i" fi done echo $AUXDIR nice --adjustment=19 tar czfv "$BACKUPFILE" --exclude-from=$EXCLUDEFILE $AUXDIR > "$LOGFILE" 2>> $EXCLUDED cat $EXCLUDEFILE >> $EXCLUDED rm -f $EXCLUDEFILE 2>> $LOGFILE find $DESTINATION -type f -exec chmod $CHMOD {} \; find $DESTINATION -type f -exec chown $CHOWN {} \; echo "Ok, all done, you can read the log file in:" echo " ->$LOGFILE"
Variables a tener en cuenta:
Nombre | Descripción |
---|---|
DESTINATION | Donde irá el backup de ficheros |
EXCLUDEFILES | Regex que contendrá los patrones de exclusión del backup |
BACKUPDIRS | Fichero que contiene la lista de directorios de los que se hará backup (1 directorio por linea) |
CHOWN | Dueño de los ficheros al terminar la ejecución del script |
CHMOD | Permisos de los ficheros al terminar la ejecución del script |
Backup de Mysql
Se usa el script standard de mysql: * Script para realizar y recuperar backups de mysql
Script Global
El script global como se puede apreciar, llama a los dos scripts anteriores:
- backup_ovh_ftp.sh
#!/bin/bash BACKUPFILES="/home/root/backup/backup_files.sh" BACKUPMYSQL="/home/root/backup/backup_mysql.sh" BACKUPFILESDIR="/home/backup/files" BACKUPMYSQLDIR="/home/backup/mysql" WORKDIR="/home/backup/ftp_backup" MYDATE="$(date +%Y%m%d)" LFTPSCRIPT="$WORKDIR/$MYDATE.lftp" FTPUSER="ksXXXXX.ovh.com" FTPPASSWD="PASSWORD" FTPSERVER="ftp-server" HISTORIC="$(dirname $0)/$(basename $0 .sh).historic" let MAXBACKUPS=20 check_dirs() { if ! [ -d $WORKDIR ] then mkdir -p $WORKDIR/$MYDATE else if [ -d $WORKDIR/$MYDATE ] then rm -fr $WORKDIR/$MYDATE fi mkdir -p $WORKDIR/$MYDATE fi } do_backups() { $BACKUPFILES $BACKUPMYSQL find $BACKUPFILESDIR -type f -name "*$MYDATE*" -exec cp -fv {} $WORKDIR/$MYDATE/ \; find $BACKUPMYSQLDIR -type f -name "*$MYDATE*" -exec cp -fv {} $WORKDIR/$MYDATE/ \; } upload_backup() { echo "set dns:cache-enable off" > $LFTPSCRIPT echo "open -p 21 $FTPSERVER" >> $LFTPSCRIPT echo "user $FTPUSER $FTPPASSWD" >> $LFTPSCRIPT echo "lcd $WORKDIR" >> $LFTPSCRIPT echo "mirror -Rc $MYDATE" >> $LFTPSCRIPT lftp -f $LFTPSCRIPT rm -fr $WORKDIR/$MYDATE echo $MYDATE >> $HISTORIC } purge_backup() { let LINES=$(cat $HISTORIC | wc -l) let HEAD=0 if [ $LINES -gt $MAXBACKUPS ] then echo "COMPROBAR PURGADO BACKUP FTP" | mail -s "comprobacion" YOUR_MAIL@DOMAIN.com let HEAD=$LINES-$MAXBACKUPS echo "set dns:cache-enable off" > $LFTPSCRIPT echo "open -p 21 $FTPSERVER" >> $LFTPSCRIPT echo "user $FTPUSER $FTPPASSWD" >> $LFTPSCRIPT for i in $(head -$HEAD $HISTORIC) do echo "rm -fr $i" >> $LFTPSCRIPT done lftp -f $LFTPSCRIPT fi } check_dirs do_backups upload_backup purge_backup
Variables a tener en cuenta:
Nombre | Descripción |
---|---|
BACKUPFILES="/home/root/backup/backup_files.sh" | Path al script de backup de ficheros |
BACKUPMYSQL="/home/root/backup/backup_mysql.sh" | Path al script de backup de MySQL |
BACKUPFILESDIR="/home/backup/files" | Donde se almacenan los backups de ficheros |
BACKUPMYSQLDIR="/home/backup/mysql" | Donde se almacenan los backups de MySQL |
WORKDIR="/home/backup/ftp_backup" | Directorio temporal de trabajo |
FTPUSER="ksXXXXX.ovh.com" | Usuario del ftp de backups (provisto por OVH) |
FTPPASSWD="PASSWORD" | Password del ftp de backups (provisto por OVH) |
FTPSERVER="ftp-server" | Servidor ftp de backups (provisto por OVH) |
let MAXBACKUPS=20 | Máximo número de backups que se conservarán en el Ftp |
New version WIP
Concept
zz_deprecated/ovh_backup_tools.1523955074.txt.gz · Last modified: 2018/04/17 08:51 by dodger