Giter Club home page Giter Club logo

mzbackup's Introduction

MZBackup: Migración y Backup de Zimbra

MZBackup es un proyecto para la migraciónn/Backup de Zimbra con mediante los comandos nativos de administración de zimbra (zm), envueltos en python al menos lo suficiente para capturar un par de errores y correr grandes listas en diferentes hilos.

Uso:

Antes de su primer uso:

  • Cambie la configuración del idioma en el fichero ~/.bash_profile: Por defecto, zimbra cambia la configuración a "C", pese a lo que el sistema tenga configurado. Esto tiene un efecto adverso cuando tratamos con caracteres en español. Al día de hoy no he tenido problemas respecto con este cambio de configuración: Cambiar
export LANG=C
export LC_ALL=C

Por un conjunto de caracteres adecuado a su idioma. Puede ver una lista de los conjuntos disponibles ejecutando en consola

$ locale -a

Así por ejemplo:

export LANG="es_SV.UTF-8"
export LC_ALL="es_SV.UTF-8"
  • Configurar autenticación sin contraseña respecto al servidor remoto: Como usuario zimbra, copie las llaves públicas del servidor del al que va a realizar backup al que va a recibir el backup: También puede usar otro usuario, si es que la idea de usar root le molesta. Por un lado, las operaciones de restauración de backup se realizarán en el servidor destino de backup, por lo que en realidad no necesita tener control del usuario root de dicho equipo
su - zimbra ssh-keygen -t rsa -b 4096 -C [email protected]
ssh-copy-id root@<ip servidor remoto>
  • Si se encuentra en CentOS 6, será necesario instalar el módulo argparse para python
$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/python-argparse-1.2.1-2.el6.noarch.rpm

Configuración:

Cree el fichero mzbackup.ini para configurar la aplicación. Configure tomando en cuenta los siguientes paramétros

  • remoto: Servidor que ha de recibir el backup
  • dir_base: Directorio base donde la aplicación realiza todas las operaciones. Cuide de crearlos manualmente en ambos servidores
mkdir /opt/backup
chmod 750 /opt/backup/
chown zimbra:root /opt/backup/
  • s_backupeador: Número de hilos para enviar mediante red los archivos de backup

  • s_usuarios: Hilos en los que se obtiene y formatea información de los usuarios. Más allá de los 35 no se nota una mejoría significativa en el tiempo empleado

  • s_mailbox: Cantidad de hilos que implica el trabajo en paralelo que. Más allá de los 28 no se nota mejoría en el tiempo empleado

  • s_listas: Número de hilos para obtener y modelar información sobre listas de distribución y los usuarios que pertenecen a ellas

  • s_envio: Cantidad de ficheros que envía por medio de SSH al servidor Remoto. Realmente no es útil configurar más que eso, al menos según lo que sabemos hasta el momento

  • s_cos: Números de hilos en los que se obtiene y formatea información de COS (Class of Service). No creo que un número alto sea necesario, entre otras cosas porque usualmente nunca son muchos. (Usualmente, claro)

  • El fichero de configuración queda de la siguiente forma:

[Global]
remoto = 10.30.20.200
dir_base = /opt/backup
s_backupeador = 2
s_usuarios = 35
s_mailbox = 28
s_listas = 14
s_envio = 2
s_cos = 4

Ejecutando los script

  • Sitúese en el servidor del que quiere realizar backup

  • Todos los script se ejecutan como usuario zimbra

  • El primer script que debe ejecutarse al menos una vez es cos.py, que guardará los COS configurados en el servidor, y ayudará otros script a hacer la correspondencia entre COS-id y COS

$ python MZBackup/cos.py
  • Por defecto, el backup para todos los módulos se realiza de forma local en el servidor. Si además de ello se requiere enviar al servidor remoto, usar la opción --envio que esta presente para todos los módulos
$ python MZBackup/cos.py --envio

Backup / Migración de datos sobre los usuarios

Es totalmente necesaria la opción --cos para asociar el ficheros cos.id más reciente

    $ python MZBackup/usuarios.py -c /opt/backup/cos-24-07-14-093319/cos.id

Puede usarse una lista de usuarios sobre los cuales realizar el backup de definición. Incluso pueden pertenecer a varios dominios

    $ python MZBackup/usuarios.py -c /opt/backup/cos-24-07-14-093319/cos.id -l /opt/backup/backup-retirados/lista-11072016.lst 

Backup / Migración de datos de listas de distribución

$ python MZBackup/listas.py

Backup / Migración de Buzones

$ python MZBackup/mailbox.py

Desarrollo

pipenv install --dev
rustup run nightly python setup.py build

Linting

python -m pylint mzbackup
python -m pylama mzbackup

Testing

Llamando a pytest como módulo agrega el actual path al SYSPATH (La cosa más genial del mundo si me lo preguntan)

python -m pytest -v tests/

Para revisar el porcentaje de código testeado:

python -m coverage run --source=mzbackup -m pytest tests/
python -m coverage report -m

Instalacion

  • Instalar python3.5
  • Instalar pip
  • Instalar el wheel

mzbackup's People

Contributors

vtacius avatar

Stargazers

Vedat Kamer avatar Konstantin L. Golovko avatar

Watchers

James Cloos avatar

mzbackup's Issues

mailbox.py tiene un error enviando mensajes

Error: El comando ha terminado con una condición de error descrita a continuación:
/opt/backup/mailbox-25-07-14-074005//opt/backup/mailbox-25-07-14-074005/agalanATsalud.gob.sv.tgz: No such file or directory

Homogenización de comentarios y titulos

Es necesario homogenizar comentarios en el código para hacerlo más legible para otras personas, así como los mensajes de cara al usuario, más por buen gusto como para profesionalizar el proyecto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.