Pergunta

Acabei de descobrir que os despejos automatizados que eu tenho criado do meu repositório SVN foram cortados mais cedo e basicamente apenas metade do despejo está lá. Não é uma emergência, mas eu odeio estar nessa situação. Ele derrota o objetivo de fazer backups automatizados em primeiro lugar.

O comando que estou usando está abaixo. Se eu executá -lo manualmente no terminal, ele será bom; O arquivo de saída.txt tem 16 megs de tamanho com todas as 335 revisões. Mas se eu deixar para Crontab, ele está na metade da marca, a cerca de 8,1 megs e apenas as primeiras 169 revisões.

# m h  dom mon dow   command
18 00 * * * svnadmin dump /var/svn/repos/myproject > /home/andrew/output.txt 

Na verdade, eu salvo em um arquivo datado e não faltam espaço no servidor, portanto esse não é um problema de espaço em disco. Parece fiança após dois segundos, então isso pode ser uma questão de tempo, mas o tamanho do arquivo é o mesmo a cada vez no mês passado, então também não acho que seja isso. Crontab é executado dentro de um espaço de memória limitado?

Foi útil?

Solução

Então, não sei qual é o problema real aqui, mas se eu dirigir o Stderr de svnadmin para /dev /null quando faço o despejo, tudo corre bem. Tentei usar a bandeira "silenciosa" (-q) e ela também é bem-sucedida. Suponho que, quando um script de shell que sai de um Crontab encontra texto suficiente em Strerr, ele para de execução do que está em execução e vai para a próxima instrução. Eu fiz um MD5 em um arquivo manual e um arquivo programado e eles são idênticos. Isso parece ser resolvido. Portanto, se alguém encontrar esse problema, este é o script de shell que eu costumava superar com sucesso o truncamento precoce. É um pouco detalhado. Desculpe.

#!/bin/sh
echo "STARTING AT $(date +\%Y/\%m/\%d/T%I:\%M:\%S)" >> /home/andrew/svnlog.txt
rm /tmp/andrewMobileApp.dump
svnadmin dump /var/svn/repos/andrewMobileApp > /tmp/andrewMobileApp.dump 2>/dev/null
echo "svnadmin exited with code $?" >> /home/andrew/svnlog.txt
gzip -c /tmp/andrewMobileApp.dump > "/home/andrew/svnbackups/andrewMobileApp.dump.$(date +\%Y\%m\%d\%I\%M\%S).txt.gz"
echo "gzip exited with code $?" >> /home/andrew/svnlog.txt
echo "DONE AT $(date +\%Y/\%m/\%d/T%I:\%M:\%S)" >> /home/andrew/svnlog.txt
echo  "-----" >> /home/andrew/svnlog.txt

Este script é invocado por meio de um super usuário Crontab.

Outras dicas

Primeiro de tudo, certifique -se de que svnadmin está na variável de ambiente do caminho do trabalho de cron. Você pode ter que especificar um caminho completo para /usr/bin/svnadmin ou o que for apropriado.

Além disso, ao invés de svnadmin dump, você pode querer olhar para svnadmin hotcopy que é uma ferramenta destinada aos backups do repositório.

Eu enviei isso como um bug no pacote Debian Cron, já que eu o estava experimentando lá também (sob um vserver). Veja Bug #577133 em Debian. Christian Kastner corrigiu o bug, adicionando código para ignorar todo o código de processamento de email se nenhum MTA for encontrado.

Você tem limite de tamanho no diretório de usuários? Pode querer tentar despejá -lo primeiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top