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.