Skip to content

Instantly share code, notes, and snippets.

@mohammedhanine
Created April 19, 2013 07:14
Show Gist options
  • Save mohammedhanine/5418644 to your computer and use it in GitHub Desktop.
Save mohammedhanine/5418644 to your computer and use it in GitHub Desktop.
#!/bin/bash
#
#-----------------------------------#
# Para añadir una copia de seguridad a la lista hay que añadir
# - DIRS la ruta de backup
# - NDIRS el nombre de backup
# - DDBB el nombre de base de datos
#-----------------------------------#
### variables script ###
DIRS=("/var/www/domain.net" "/var/www/domain.org" "/var/www/domain.com")
NDIRS=("domainnet" "domainorg" "domaincom")
DDBB=("domainnet" "domainorg" "domaincom")
BACKUP=/root/backup.$$
NOW=$(date +"%d-%m-%Y")
LOGBASE="/tmp/log-backup.txt"
MAILID="[email protected]"
### Variables DIR ###
DBAK="WEB" #nombre la carpeta de backup
### Variables MySQL ###
MYUSER="usermysql"
MYPASS="passmysql"
MYHOST="localhost"
MYBAK="DDBB" #nombre la carpeta de base de datos
### Variables FTP ###
FTPD="/backup/"
FTPU="ftp.domain.com"
FTPP="passftp"
FTPS="userftp"
NCFTP="$(which ncftpput)"
### Variable CONFIG ###
CONF="/etc/mysql/ /etc/nginx/ /etc/php5/fpm/conf.d/ "
CONFBAK="CONF"
echo "Comienzo BACKUP: " $(hostname) > $LOGBASE
echo "Día:" $NOW >> $LOGBASE
echo "-------------------" >> $LOGBASE
[ ! -d $BACKUP ] && mkdir -p $BACKUP || :
#Backup DIRS
echo "Empiezo volcado WWW:" $(date +"%T") >> $LOGBASE
mkdir $BACKUP/$DBAK/
e=0
for dir in "${DIRS[@]}"
do
TIME=$(date +"%Hh%Mm%Ss")
FILE="${NDIRS[$e]}-$NOW-$TIME.tar.gz"
e="$(echo $e+1 | bc)"
echo "comprimer: tar -zcvf $BACKUP/$DBAK/$FILE $dir" >> $LOGBASE
tar -zcvf $BACKUP/$DBAK/$FILE $dir
echo "md5: $(md5sum $BACKUP/$DBAK/$FILE)" >> $LOGBASE
done
#Backup DDBB
echo "--------" >> $LOGBASE
echo "Empiezo volcado DDBB:" $(date +"%T") >> $LOGBASE
mkdir $BACKUP/$MYBAK
for db in "${DDBB[@]}"
do
TIME=$(date +"%Hh%Mm%Ss")
FILE=mysql-$db-$NOW-$TIME.gz
echo "comprimer: mysqldump -u $MYUSER -h $MYHOST -p$MYPASS $db | gzip -9 > $BACKUP/$MYBAK/$FILE" >> $LOGBASE
mysqldump -u $MYUSER -h $MYHOST -p$MYPASS $db | gzip -9 > $BACKUP/$MYBAK/$FILE
echo "md5: $(md5sum $BACKUP/$MYBAK/$FILE)" >> $LOGBASE
done
#Backup CONFIG
echo "--------" >> $LOGBASE
echo "Empiezo volcado CONFIGURACION:" $(date +"%T") >> $LOGBASE
FILE=config-$NOW.tar.gz
mkdir $BACKUP/$CONFBAK
echo "comprimer: tar -zcvf $BACKUP/$CONFBAK/$FILE $CONF" >> $LOGBASE
tar -zcvf $BACKUP/$CONFBAK/$FILE $CONF
echo "md5: $(md5sum $BACKUP/$CONFBAK/$FILE)" >> $LOGBASE
# Copiar al ftp
echo "--------" >> $LOGBASE
echo "Copiar al ftp:" $(date +"%T") >> $LOGBASE
ncftp -u"$FTPU" -p"$FTPP" $FTPS<<EOF
mkdir $FTPD
mkdir $FTPD/$NOW
cd $FTPD/$NOW
lcd $BACKUP
mput -R *
quit
EOF
# fin del backup
if [ "$?" == "0" ]; then
echo "--------" >> $LOGBASE
echo "Completado:" $(date +"%T") >> $LOGBASE
#echo "mail -s "BACKUP $(hostname) $NOW" "$MAILID" <$LOGBASE"
rm -r $BACKUP
else
T=/tmp/backup.fail
echo "Date: $(date)">$T
echo "Hostname: $(hostname)" >>$T
echo "Backup failed" >>$T
#mail -s "BACKUP FAILED" "$MAILID" <$T
rm -f $T
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment