creamos un archivo llamado backup.sh
#!/bin/sh
#dar pemisos de ejecucion a este archivo chmod +x backup.sh
#para ejecutar ./backup2.sh
#crontab todos los dias a las 11:30 como root
#30 23 * * * /path/crontab/backup.sh
#Meter aqui la contraseña de postgresql
#export PGUSER=NOMBRE_USUARIO
export PGPASSWORD=CLAVE_BASE_DATOS
DATE=`date +%Y%b%d-%H%M%S`; ANO=`date +%Y`; MES=`date +%b`
MYSQL=0; PGSQL=1
DB_ARRAY=(BD1 B2)
TY_ARRAY=($PGSQL $PGSQL)
DB_SERV=( "mysqldump -t -u mysqluser --password=password"
"pg_dump --username=dddcomc_publico -F p -O -D -v -f"
)
DB_NAME=("MYSQL SERVER" "POSTGRESQL")
BACKUP=/path/Backups/base_datos
OWNER=user.gruop
if ! [ -d $BACKUP ]; then
echo -e "?33[0;37mCreando t ?33[0;31m$BACKUP "
mkdir $BACKUP
chown $OWNER -R $BACKUP/
fi
i=0
while [ $i -lt ${#DB_ARRAY[@]} ]; do
dbname=${DB_ARRAY[$i]}
if ! [ -d $BACKUP/$ANO ]; then
echo -e "?33[0;37mCreando t ?33[0;31m $BACKUP/$ANO"
mkdir $BACKUP/$ANO
mkdir $BACKUP/$ANO/$MES
mkdir $BACKUP/$ANO/$MES/$dbname
chown $OWNER -R $BACKUP/$ANO/$MES/$dbname
elif ! [ -d $BACKUP/$ANO/$MES ]; then
echo -e "?33[0;37mCreando t ?33[0;31m $BACKUP/$ANO/$MES"
mkdir $BACKUP/$ANO/$MES
mkdir $BACKUP/$ANO/$MES/$dbname
chown $OWNER -R $BACKUP/$ANO/$MES/$dbname
elif ! [ -d $BACKUP/$ANO/$MES/$dbname ]; then
echo -e "?33[0;37mCreando t ?33[0;31m $dbname"
mkdir $BACKUP/$ANO/$MES/$dbname
chown $OWNER -R $BACKUP/$ANO/$MES/$dbname
fi
idx=${TY_ARRAY[$i]}
echo -e ${DB_SERV[$idx]} $dbname | gzip > $BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql.gz
#${DB_SERV[$idx]} $dbname | gzip > $BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql.gz
#echo -e "?33[0;37m${DB_NAME[$idx]}:t $dbname ttt [?33[0;32m OK ?33[0;37m]"
#crea el sql
pg_dump -i -h localhost -p 5432 -U $PGUSER -F p -O -D -f "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql" $dbname
cat "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql" | gzip > "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql.gz"
#dump
pg_dump --host localhost --username $PGUSER --format custom --blobs --oids --verbose --file "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.backup" $dbname
cat "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.backup" | gzip > "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.backup.gz"
rm "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.sql"
rm "$BACKUP/$ANO/$MES/$dbname/$dbname-$DATE.backup"
echo -e "?33[0;37m${DB_NAME[$idx]}:t $dbname ttt [?33[0;32m OK ?33[0;37m]"
i=$(($i+1))
done
Con esta instruccion hacemos que se ejecute todos los dias a las 11:30 pm
30 23 * * * /path/crontab/backup.sh
No hay comentarios:
Publicar un comentario