
1. Por onde começar
Onde o backup é iniciado? Planejamento. Ao fazer backup de qualquer sistema, você precisa fazer um plano de backup: com que precisão, quantas vezes, por quanto tempo armazenar, haverá espaço livre suficiente? Das respostas a estas perguntas, segue a resposta para a pergunta principal - como fazer backup?
Se houver muito espaço livre, você poderá armazenar toda a máquina virtual. Faça backups com o mesmo Veeam em um cronograma e não pense nas dificuldades. Mas, para mim, é um desperdício, estou acostumado a fazer tudo da forma mais concisa e econômica possível. Obviamente, implantei o Veeam, mas apenas faço cópias de backup desses sistemas que são impossíveis ou problemáticos de implantar a partir de backups por um período muito longo.
Sobre os scripts das ferramentas de gerenciamento do ambiente virtual, simplesmente ficarei em silêncio de maneira significativa.
O Zimbra possui uma ferramenta zmmailbox. E, examinando mais de perto sua funcionalidade, percebi que seria mais do que suficiente para mim. Ele pode fazer backup e restaurar caixas de correio, mesmo em um sistema ativo. E gostei da capacidade de fazer backup de caixas de correio críticas separadamente do backup de todo o sistema. Portanto, o espaço ocupado pelos backups será limitado pelo tamanho das caixas de correio arquivadas multiplicado pelo número de dias de "profundidade do backup" e não pelo volume de todo o sistema multiplicado pelo mesmo número de dias. Além disso, é extremamente difícil recuperar de um backup de todo o sistema, no caso do Zimbra. É muito mais fácil copiar uma máquina virtual usando as ferramentas Veeam ou de gerenciamento de ambiente virtual (Hyper-V, ESXI, digite a desejada) logo após configurar o sistema e colocá-la na prateleira para que, em um momento crítico, você possa implantar rapidamente VMs quase sem peso e fazer o upload nele backups de caixas. Na minha opinião, este é o cenário menos caro em todos os aspectos.
2. Os dados de origem:
Sistema operacional do servidor : CentOS 7
Sobre o SODe fato, a diferença entre o CentOS7 e qualquer outro sistema está apenas em comandos para o servidor instalar pacotes e, possivelmente, na localização de alguns arquivos. O trabalho é realizado principalmente com cmdlets do Zimbra, para que as diferenças de configuração sejam mínimas.
Domínio Zimbra : zimbramail.home.local
Nome de usuário e senha para acessar a pasta compartilhada : ZimbraBackUp / 123123
O caminho para a pasta compartilhada : \\ BackUpServer1 \ ZM \
O caminho para montar as bolas no host Zimbra : / mnt / ZM /
3. Configuração
Então, vamos começar!
Escreveremos backups em um servidor executando o Windows em uma pasta compartilhada. Se desejar, você pode mesclar backups em qualquer lugar, mas tudo está configurado para que a maioria dos backups seja gravada em BackUpServer1.home.local. Para que:
1) Criamos no domínio do usuário para acessar a pasta compartilhada neste servidor, para que possa ser montada no servidor Zimbramail.home.local. Nome de usuário ZimbraBackUp, senha, condicionalmente, 123123.
2) No servidor BackUpServer1, crie o diretório \ ZM \ no repositório e compartilhe-o, concedendo direitos de alteração para o usuário ZimbraBackUp. O caminho para a bola será: \\ BackUpServer1 \ ZM \
3) Monte a bola no servidor Zimbramail.home.local. Para que a pasta seja montada automaticamente, você precisa corrigir o arquivo / etc / fstab adicionando a linha a ele:
//BackUpServer/ZM /mnt/ZM cifs user,uid=500,rw,suid,username=ZimbraBackUp,password=123123 0 0
Mas primeiro você precisa verificar se a montagem funciona:
$ mount -t cifs //BackUpServer/ZM /mnt/ZM -o user=ZimbraBackUp,password=123123
Muitas vezes, um erro como este aparece:
mount: wrong fs type, bad option, bad superblock on //BackUpServer1/ZM/, missing codepage or helper program, or other error (for several filesystems (eg nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so.
Você pode corrigi-lo instalando o cifs-utils:
$ yum install cifs-utils
Após a configuração, recomendo reiniciar o servidor.
4) Crie 3 arquivos de script: FullBackUp.sh HandBackUp.sh Restore.sh
O primeiro arquivo será usado para criar automaticamente backups agendados, o segundo para a capacidade de fazer backup de caixas de correio individuais ou simplesmente iniciar manualmente "what if". E o terceiro script é a restauração de uma ou de todas as caixas de uma só vez. Tentei, tanto quanto possível, comentar o trabalho dos scripts e o registro prescrito.
O conteúdo do arquivo FullBackUp.sh: Conteúdo do arquivo HandBackUp.sh: O conteúdo do arquivo Restore.sh: Há uma sutileza. Se você criar e editar arquivos de script para o bash no Windows, quando tentar executar o script, aparecerá um erro:
/ bin / sh ^ M: intérprete incorreto: não existe
esse arquivo ou diretório , que são os editores executados no Windows. o final da linha é o caractere de retorno de carro "CR \ LF", que os editores no Linux não exibem. Mas este símbolo está lá e não desapareceu. Para se livrar do erro e remover os caracteres extras, faça o seguinte:
$ cat your-script.sh | tr -d '\r' > corrected-your-script.sh
Bem, ou você pode usar o utilitário dos2unix, mas ainda precisa instalá-lo:
$ yum install dos2unix $ dos2unix your-script.sh
5) Tornamos os scripts executáveis:
$ chmod 0740 /opt/zimbra/BkUpRestScripts/FullBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/HandBackUp.sh $ chmod 0740 /opt/zimbra/BkUpRestScripts/Restore.sh
6) Eu recomendo que você execute scripts com as mãos e verifique se eles funcionam e como eles funcionam.
7) Crie uma tarefa no CRON para backup diário de caixas de correio:
10 0 * * * root /opt/zimbra/ BkUpRestScripts/FullBackUp.sh
8) Aproveite
4. Script
Caso os comentários nos scripts em si não tenham ajudado.
1) Script FullBaclUp.sh:No início, as variáveis são determinadas, qual delas é responsável pelo quê - tudo é comentado.
A seguir, é apresentada uma verificação da ausência de um diretório para backup; se ele não existir, ele será criado. A conclusão é feita no arquivo de log e na tela (se iniciada manualmente) sobre o sucesso ou falha da criação de um diretório.
Verifique se há um catálogo ausente com a data de hoje. Se não estiver lá, é criado, a saída para a tela e o log do resultado da criação do diretório também são gerados.
Gravando em um arquivo todas as caixas de correio Zimbra existentes. É necessário para reserva sequencial de cada caixa. Exibe o resultado do comando.
Criando um backup para cada caixa de correio da lista recebida. Com a saída da execução na tela e no arquivo de log.
Limpando um arquivo com uma lista de caixas. Como os três scripts funcionam com esse arquivo, é recomendável limpá-lo após cada execução, para que não haja surpresas. Você pode limpá-lo antes do início do script, mas é mais familiar para mim não armazenar dados desnecessários após o término do trabalho, mas fazer o mesmo antes e depois do script funcionar é um grau moderado de esquizofrenia.
A seguir, é um bloco para criar um arquivo compactado.
Verificando a ausência do diretório de armazenamento de archive, criando-o na ausência e exibindo o resultado da criação na tela e no log
Arquivamento
Marque "não é o primeiro dia de hoje?" Eu prefiro armazenar backups durante o primeiro dia de todos os meses por um longo período, isso é suficiente para eu trabalhar. Ele pode ser armazenado por semanas, mas geralmente isso é redundante. Mas a condição para armazenar backups durante todo o período de operação do servidor de correio é definida no topo, para que eles estejam sempre lá. Se o número for o primeiro, o arquivo resultante será copiado para um diretório "Mounthly" separado. E para copiá-lo, é necessário verificar se existe um diretório e, se não, criá-lo, o que deve ser relatado na tela e no arquivo de log.
Em seguida, o armazenamento é limpo - todos os backups anteriores a 2 semanas são excluídos, bem como os arquivos anteriores a 61 dias. O resultado da exclusão é exibido na tela e no arquivo de log.
Após o qual o script grava o tempo de conclusão no arquivo de log e na tela e termina seu trabalho.
2) Script HandBackUp.sh:No início, as variáveis também são definidas, também comentadas sobre o motivo de serem necessárias.
Em seguida, o usuário é solicitado a inserir o nome da caixa de correio que precisa ser copiada, sem especificar o domínio Zimbra. (está escrito no convite para entrar) ou selecione um backup de todas as caixas de correio escrevendo TODAS ou TODAS.
Se você optar por fazer backup de todas as caixas de correio, o script funcionará quase da mesma forma que a primeira listada acima, exceto que, após a criação de backups de cada caixa de correio, será perguntado - eu preciso arquivá-las?
Se uma caixa de correio específica foi gravada, sua existência é verificada no Zimbra. Se existir uma caixa com o nome especificado, o processo de backup dessa caixa será iniciado, com as informações correspondentes exibidas na tela e no arquivo de log. Se a caixa especificada não existir, o usuário será informado sobre isso e o script concluirá seu trabalho.
Após a conclusão do backup da caixa, você será solicitado a arquivar a cópia. Se o usuário concordar - há uma verificação da ausência de um diretório para armazenar o arquivo morto e mais abaixo na lista, como no primeiro script.
Após a conclusão do arquivamento, o arquivo com a lista de caixas de correio é limpo. Apenas no caso.
No final, as informações sobre o tempo de conclusão do script são exibidas na tela e no arquivo de log.
3) Script Restore.sh:Como nos arquivos anteriores, primeiro - a definição de variáveis com comentários.
O usuário é solicitado a selecionar a data do backup a ser restaurado. Se a data especificada não estiver nos backups, o script será encerrado relatando isso.
Se existirem backups para a data especificada - solicite ao usuário que digite o nome da caixa que precisa ser restaurada. Para restaurar todas as caixas, você precisa escrever TODAS ou TODAS.
Se a opção ALL estiver selecionada, o script criará uma lista de arquivos na pasta de backup no arquivo, notificando sobre o resultado da criação.
A seguir, é apresentada uma recuperação passo a passo de cada caixa. Primeiro, verifique a existência de uma caixa no sistema, caso contrário, ela é criada e depois restaurada. As informações sobre cada operação são exibidas no arquivo de log e na tela.
Se uma caixa específica é selecionada, é quase a mesma. Verifique a existência de um arquivo com o nome solicitado. Saída para a tela e o arquivo de log de resultados.
Verificando a existência de uma caixa no sistema. Saída para a tela e o arquivo de log de resultados.
O convite para o usuário concordar com a criação da caixa na ausência dela no sistema. Saída para a tela e o arquivo de log de resultados.
Crie uma caixa, se acordado. Saída para a tela e o arquivo de log de resultados.
Recuperação de caixa de correio. Saída para a tela e o arquivo de log de resultados.
Limpando um arquivo com uma lista de caixas de recuperação.
No final, as informações sobre o tempo de conclusão do script são exibidas na tela e no arquivo de log.
5. Quanto à recuperação
Se você modificar levemente esses scripts, eles serão adequados para mover mensagens de servidor para servidor, simplesmente criando em um novo local caixas de correio com todo o conteúdo. Também é possível restaurar o sistema a partir do zero, quando, por algum motivo, é mais fácil aumentar novamente o servidor Zimbra do que tentar reviver o antigo. Como descrito acima, você pode salvar a imagem da máquina virtual configurada expandindo-a, se necessário, e preenchendo-a com todos os dados. O mesmo algoritmo para mover de um servidor Zimbra para outro.
E não são necessários utilitários pagos como o Zextras.6. Conclusão
Em geral, não há nada complicado nos scripts que escrevi. Sim, existem muitas condições neles, porque tentei prever o maior número possível de problemas e erros no trabalho deles, mas também tentei comentar o script o mais claramente possível. Provavelmente, fora da caixa, eles não funcionarão para todos. Talvez alguém não tenha esse método de backup. Mas espero que muitos achem útil.7. PS:
Este é o segundo artigo da série "Como eu implementei o Zimbra". O primeiro é sobre implementação, autorização LDAP e criação automática de caixas de correio para usuários do AD, aqui .O terceiro artigo sobre a geração automática e atualização de listas de discussão baseadas em AD no Zimbra OSE está aqui .E também quero observar que esta é a minha primeira experiência de script em uma base, por causa disso, os scripts acabaram sendo muito volumosos e "especialmente inteligentes", como eles dizem.