script para programar backups

173 views
Skip to first unread message

fenix

unread,
Jan 7, 2009, 11:00:42 AM1/7/09
to zimbra grupo
Hola a todos.

Me he encontrado con un problema en uno de los Zimbra que administro.
Resulta que hay una cuenta de correo que ocupa mucho más espacio que
el resto, y que queremos separar a la hora de hacer los backup.

Hasta ahora, teníamos la política de backups por defecto, ejecutando
'zmschedulebackup -D -z', que programa la siguiente secuencia de
backups para todas las cuentas:

f 0 1 * * 6
i 0 1 * * 0-5
d 1m 0 0 * * *

Pero eso incluye todas las cuentas, y no hay forma de excluir la
cuenta de la que no queremos hacer copia de seguridad.

Podríamos programar esta misma secuencia de backups para todas las
cuentas menos esa, ejecutando 'zmschedulebackup -D -z -a
$nombredecuenta' para cada cuenta; pero el problema vendría al crear
un nuevo usuario, que quedaría fuera de los backups salvo que
volvieramos a ejecutar 'zmschedulebackup' para esa cuenta. Y me
gustaría automatizarlo.

Así que he creado el siguiente script:

#!/bin/bash
#
#
/opt/zimbra/bin/zmprov gaa > /tmp/zusers
chown zimbra:zimbra /tmp/zusers
chmod 700 /tmp/zusers
sed -e '/te...@prueba.net/d' /tmp/zusers > /tmp/zusers_tmp
mv /tmp/zusers_tmp /tmp/zusers
/opt/zimbra/bin/zmschedulebackup -F
linea=`wc -l /tmp/zusers |cut -c1`
while read linea
do
/opt/zimbra/bin/zmschedulebackup -A -z -a $linea f '15 12 * *
0-5'
/opt/zimbra/bin/zmschedulebackup -A -z -a $linea i '10 12 * *
0-5'
done < /tmp/zusers
rm -f /tmp/zusers



De esta forma, sacamos los usuarios existentes en Zimbra usando
'zmprov gaa', y la almacenamos en el fichero /tmp/zusers, al que
asignamos el usuario 'zimbra' con todos los permisos. Luego editamos
'zusers' con el comando 'sed', eliminando la línea del fichero que
contiene 'te...@prueba.net'.

Después eliminamos la programación existente de backups con
'zmschedulebackup -F', y programamos la eliminación de backups mensual
(que es la misma para todas las cuentas) con 'zmschedulebackup -A d 1m
"0 0 * * *"'.

A partir de ahí, vamos leyendo el fichero /tmp/zusers línea a línea, y
para cada una agregamos (con la opción -A) la siguiente política de
backup:

f 0 1 * * 6
i 0 1 * * 0-5


El script funciona perfectamente. Al ejecutarse, borra toda la
política de backups existente (no los backup que ya se han realizado),
y la vuelve a programar incluyendo todas las cuentas menos la que
queremos excluir. Lo podemos comprobar ejecutando el script y luego
'zmschedulebackup -q', que nos muestra la programación de backups
existente.

Lo agregamos al cron de Zimbra, ejecutando como usuario 'zimbra' el
comando 'crontab -e' y añadiendo la siguiente línea:

0 23 * * * /opt/zimbra/bin/zmscbackup.sh

De esta forma, cada día a las 23:00 horas se regenera la programación
de backups de Zimbra; a las 0:00 se eliminan todos los backup cuya
antigüedad exceda de un mes; entre semana a la 1:00 se realiza un
backup incremental de cada cuenta, y el domingo a la 1:00 un backup
completo de cada cuenta: todo ello excluyendo la cuenta
te...@prueba.net, de la que no se realizan backups nunca.

Espero que a alguien le pueda ser de utilidad.

cejodrake

unread,
Jan 7, 2009, 11:18:46 AM1/7/09
to zimbr...@googlegroups.com
Gracias por la Informacion ,,
sera de mucha utilidad
--
nadie nace aprendido todo en esta vida se aprende

cejodrake

unread,
Jan 7, 2009, 11:22:03 AM1/7/09
to zimbr...@googlegroups.com
se me olvido preguntarte , eso se hace en la Open o en la Comercia??
por q quise ejecutar ese comendo y no me acepto
saludos

fenix

unread,
Jan 8, 2009, 4:55:16 AM1/8/09
to zimbra grupo
En la comercial, Network Edition. Por curiosidad (no tengo ninguna
Open Source con la que jugar ahora mismo), ¿qué comando es el que no
te deja ejecutar? ¿'zmschedulebackup'? Porque como sea ese, el script
no te funcionará ni a tiros.

De todos modos, no sería complicado toquetearlo un poco para que
agregue los backups al cron, pasándole con 'crontab -e -u zimbra' los
mismos parámetros pero usando 'zmbackup' en lugar de
'zmschedulebackup'.

On 7 ene, 17:22, cejodrake <cejodr...@gmail.com> wrote:
> se me olvido preguntarte , eso se hace en la Open o en la Comercia??
> por q quise ejecutar ese comendo y no me acepto
> saludos
>
> El 7 de enero de 2009 10:18, cejodrake <cejodr...@gmail.com> escribió:
>
>
>
> > Gracias por la Informacion ,,
> > sera de mucha utilidad
>
> >> sed -e '/t...@prueba.net/d' /tmp/zusers > /tmp/zusers_tmp
> >> mv /tmp/zusers_tmp /tmp/zusers
> >> /opt/zimbra/bin/zmschedulebackup -F
> >> linea=`wc -l /tmp/zusers |cut -c1`
> >> while read linea
> >> do
> >>        /opt/zimbra/bin/zmschedulebackup -A -z -a $linea f '15 12 * *
> >> 0-5'
> >>        /opt/zimbra/bin/zmschedulebackup -A -z -a $linea i '10 12 * *
> >> 0-5'
> >> done < /tmp/zusers
> >> rm -f /tmp/zusers
>
> >> De esta forma, sacamos los usuarios existentes en Zimbra usando
> >> 'zmprov gaa', y la almacenamos en el fichero /tmp/zusers, al que
> >> asignamos el usuario 'zimbra' con todos los permisos. Luego editamos
> >> 'zusers' con el comando 'sed', eliminando la línea del fichero que
> >> contiene 't...@prueba.net'.
>
> >> Después eliminamos la programación existente de backups con
> >> 'zmschedulebackup -F', y programamos la eliminación de backups mensual
> >> (que es la misma para todas las cuentas) con 'zmschedulebackup -A d 1m
> >> "0 0 * * *"'.
>
> >> A partir de ahí, vamos leyendo el fichero /tmp/zusers línea a línea, y
> >> para cada una agregamos (con la opción -A) la siguiente política de
> >> backup:
>
> >> f 0 1 * * 6
> >> i 0 1 * * 0-5
>
> >> El script funciona perfectamente. Al ejecutarse, borra toda la
> >> política de backups existente (no los backup que ya se han realizado),
> >> y la vuelve a programar incluyendo todas las cuentas menos la que
> >> queremos excluir. Lo podemos comprobar ejecutando el script y luego
> >> 'zmschedulebackup -q', que nos muestra la programación de backups
> >> existente.
>
> >> Lo agregamos al cron de Zimbra, ejecutando como usuario 'zimbra' el
> >> comando 'crontab -e' y añadiendo la siguiente línea:
>
> >> 0 23 * * * /opt/zimbra/bin/zmscbackup.sh
>
> >> De esta forma, cada día a las 23:00 horas se regenera la programación
> >> de backups de Zimbra; a las 0:00 se eliminan todos los backup cuya
> >> antigüedad exceda de un mes; entre semana a la 1:00 se realiza un
> >> backup incremental de cada cuenta, y el domingo a la 1:00 un backup
> >> completo de cada cuenta: todo ello excluyendo la cuenta
> >> t...@prueba.net, de la que no se realizan backups nunca.
Reply all
Reply to author
Forward
0 new messages