Si es posible... echa un vistazo a este script:
Que hace el script:
Crea una carpeta donde se guardará todo, y esta carpeta es la que luego se comprimirá.
Esta carpeta tendrá de nombre el año, mes y día presente, por ejemplo hoy esa carpeta se llamaría: 2015-09-06
Copia /etc/ (y todo su contenido) a esa carpeta.
Copia logs (/var/log/) hacia esa carpeta antes mencionada.
Exporta las bases de datos de MySQL que tengamos.
Comprime con un password (PASSWORD) esa carpeta, la comprime en .RAR.
Genera un archivo (data.info) con todo el log de lo antes hecho (log de copia de archvios y compresión a .rar), además de poner en este archivo el tamaño (en MBs) del archivo .RAR.
Borra la carpeta en la que pusimos los archivos y que luego comprimimos.
Envía emails a los administradores o personas relacionadas con el servidor, informando que el backup se hizo de forma correcta, y se les enviará adjunto en ese email el archivo con el log de todo (data.info.rar
Código BASH:
Ver original#!/bin/sh
#
# -*- ENCODING: UTF-8 -*-
#
NAME="VPS_Backup-Script" # Nombre script.
#Descripción: Script de backup de files y DBs del VPS
: ${VERSION:=0.1} # Versión script.
: ${DATE:=$(date +'%Y-%m-%d')} # Variable para Fecha.
: ${TIME:=$(date +'%R')} # Variable para Hora.
: ${WORK_DIR:=/home/backups/$DATE} # Directorio de trabajo actual.
: ${LOG_FILE:=/home/backups/$DATE/record.log} # Archivo de log.
: ${LINE:="-"}
: ${DB_PASS:=dbpasswordyeah} # Password de MySQL.
# Creando directorio donde se trabajará, si es que no existe.
if ! -d "`dirname $LOG_FILE`" ; then mkdir -p "`dirname $LOG_FILE`"; fi
# Cambiando a directorio donde trabajaremos.
cd $WORK_DIR
# Copiando /ETC/ hacia directorio de trabajo actual.
cp -Rv /etc/ $WORK_DIR > $LOG_FILE
echo $LINE >> $LOG_FILE
# Creando carpeta para logs.
mkdir $WORK_DIR/logs
# Copiando LOGs.
cp /var/log/apache2/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/aptitud* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/auth* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/daemon* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/dmes* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/kern* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/mail* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/message* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/mysql/ $WORK_DIR/logs/ -Rv >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/mysql.* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
cp /var/log/sys* $WORK_DIR/logs/ -v >> $LOG_FILE && echo $LINE >> $LOG_FILE
# Creando carpeta para DBs.
mkdir $WORK_DIR/dbs
# Exportando DBs.
mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" misitio > "$WORK_DIR/dbs/misitio.sql"
mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" mysql > "$WORK_DIR/dbs/mysql.sql"
mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" blogdb > "$WORK_DIR/dbs/blogdb.sql"
mysqldump --opt -hlocalhost -uroot -p"$DB_PASS" pastebin > "$WORK_DIR/dbs/pastebin.sql"
# Saliendo un nivel más arriba (/home/backups/).
cd ..
# Comprimiendo directorio de trabajo actual.
#tar czvf "$DATE.tar.gz" "$DATE"
rar a $DATE.rar -hpPASSWORD $WORK_DIR >> $LOG_FILE && echo $LINE >> $LOG_FILE
# Preparando información para enviar por email.
touch data.info
echo "El archivo $DATE.rar tiene un tamaño de:" > data.info
du -bsh $DATE.rar >> data.info
echo $LINE >> data.info
cat $LOG_FILE >> data.info
tar czvf data.info.tar.gz data.info
# Eliminando directorio una vez comprimido.
rm -R "$WORK_DIR"
# Enviando emails a administradores.
mail -s "VPS | Status de Backup." $ADMIN1a < data.info.tar.gz
mail -s "VPS | Status de Backup." $ADMIN1b < data.info.tar.gz
mail -s "VPS | Status de Backup." $ADMIN2a < data.info.tar.gz
mail -s "VPS | Status de Backup." $ADMIN2b < data.info.tar.gz
# Haciendo copia por SSH hacia cuenta en otro servidor o hosting.
echo " #######################"
echo " ## BACKUP REALIZADO! ##"
echo " #######################"
# Fin del script.
exit 0
Dale permisos previamente: