User Tools

Site Tools


zz_deprecated:ovh_backup_tools

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

zz_deprecated:ovh_backup_tools [2018/05/17 09:10]
dodger ↷ Page moved from linux:ovh_backup_tools to deprecated:ovh_backup_tools
zz_deprecated:ovh_backup_tools [2019/07/18 09:17]
Line 1: Line 1:
-====== [SCRIPT] OVH backup tools ====== 
- 
-======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: 
-<​code>​ 
- ​Servidor -> Servicios -> Gestión de Backups -> Backup FTP 
-</​code>​ 
- 
- 
-=====Backup de Ficheros===== 
-El script es muy simple, al finalizar dejará un fichero comprimido conteniendo todos los directorios que son objetivo del backup: 
-<file bash 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"​ 
-</​file>​ 
- 
-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: 
-* [[mysql:​script_backup_mysql|Script para realizar y recuperar backups de mysql]] 
- 
-=====Script Global===== 
-El script global como se puede apreciar, llama a los dos scripts anteriores: 
-<file bash 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 
-</​file>​ 
- 
- 
-Variables a tener en cuenta: 
-^ Nombre ^ Descripción ^ 
-|<​code>​BACKUPFILES="/​home/​root/​backup/​backup_files.sh"</​code>​|Path al script de backup de ficheros | 
-|<​code>​BACKUPMYSQL="/​home/​root/​backup/​backup_mysql.sh"</​code>​|Path al script de backup de MySQL| 
-|<​code>​BACKUPFILESDIR="/​home/​backup/​files"</​code>​|Donde se almacenan los backups de ficheros| 
-|<​code>​BACKUPMYSQLDIR="/​home/​backup/​mysql"</​code>​|Donde se almacenan los backups de MySQL| 
-|<​code>​WORKDIR="/​home/​backup/​ftp_backup"</​code>​|Directorio temporal de trabajo| 
-|<​code>​FTPUSER="​ksXXXXX.ovh.com"</​code>​|Usuario del ftp de backups (provisto por OVH)| 
-|<​code>​FTPPASSWD="​PASSWORD"</​code>​|Password del ftp de backups (provisto por OVH)| 
-|<​code>​FTPSERVER="​ftp-server"</​code>​|Servidor ftp de backups (provisto por OVH)| 
-|<​code>​let MAXBACKUPS=20</​code>​|Máximo número de backups que se conservarán en el Ftp| 
- 
-====== New version WIP ====== 
-===== Concept ===== 
-<​graphviz>​ 
-digraph Incremental { 
-compund=true;​ 
-subgraph cluster0 { 
- Monday [shape=box];​ 
- Full [shape=doubleoctagon,​label="​Full Uncompressed backup"​];​ 
- { rank = same; 
- Monday; 
- Full; 
- } 
- Monday->​Full;​ 
-} 
- 
-subgraph cluster1 { 
- restofdays [shape=record,​label="​{Tuesday|...|Sunday}"​];​ 
- find [shape=mdiamond];​ 
- config[shape=folder,​label="​Selected folders"​];​ 
- zip[shape=mdiamond];​ 
- { rank = same; 
- restofdays;​ 
- find; 
- config; 
- zip; 
- } 
- restofdays->​find;​ 
- find->​config;​ 
- config->​zip;​ 
-} 
- 
-FTP[shape=box,​label="​OVH FTP"]; 
-{ rank = same; 
- zip; 
- FTP; 
-} 
- 
-Monday->​restofdays;​ 
-restofdays->​Monday;​ 
-Full->​FTP;​ 
-zip->​FTP;​ 
-} 
-</​graphviz>​ 
- 
  
zz_deprecated/ovh_backup_tools.txt · Last modified: 2019/07/18 09:17 (external edit)