zz_deprecated:ovh_backup_tools
Table of Contents
[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:
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.txt · Last modified: 2022/02/11 11:36 by 127.0.0.1