Pregunta

Acabo de descubrir que las descargas automáticas que he estado creando de mi repositorio SVN han estado recibiendo corte antes de tiempo y, básicamente, sólo la mitad de la basura está ahí. No es una emergencia, pero no me gusta estar en esta situación. En contra del propósito de hacer copias de seguridad automatizadas en el primer lugar.

El comando que estoy usando es abajo. Si ejecuto manualmente en el terminal, se completa muy bien; salida.txt el archivo es de 16 megas de tamaño con todas las 335 revisiones. Pero si lo dejo a crontab, fianzas de TI en la mitad del recorrido, alrededor de 8,1 megas y sólo los primeros 169 revisiones.

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

En realidad, guardar en un archivo comprimido con gzip anticuada, y no hay escasez de espacio en el servidor, por lo que este no es un problema de espacio en disco. Parece que rescatar después de dos segundos, por lo que este podría ser un problema de tiempo, pero el tamaño del archivo es el mismo cada vez durante el último mes, así que no creo que sea tan bien. ¿El crontab ejecuta dentro de un espacio de memoria limitado?

¿Fue útil?

Solución

Por lo tanto, no sé cuál es el problema real es aquí, pero si la ruta que STDERR de svnadmin a / dev / null cuando lo haga el volcado, todo va bien. He intentado utilizar la "tranquila" bandera (q) y también tiene éxito. Estoy asumiendo que cuando un shell script que va desde un crontab se encuentra con suficiente texto en STRERR, se detiene la ejecución de lo que está funcionando y va a la siguiente instrucción. He hecho un MD5 de un archivo manual y un archivo programado y son idénticos. Esto parece estar resuelto. Así que si alguien se encuentra con este problema ellos mismos, este es el script de shell que utiliza para obtener éxito más allá de la truncación temprana. Es un poco más detallado. Lo siento.

#!/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 se invoca a través de un crontab superusuario.

Otros consejos

En primer lugar, asegúrese de que svnadmin está en la variable de entorno PATH de la tarea cron. Puede que tenga que especificar una ruta completa para /usr/bin/svnadmin o lo que sea apropiado.

Además, en lugar de svnadmin dump, es posible que desee ver en svnadmin hotcopy que es una herramienta diseñada para realizar copias de seguridad del repositorio.

he presentado esto como un error en el paquete cron Debian, ya que estaba experimentando allí también (bajo un vserver). Ver el bug # 577133 en Debian. Cristiano Kastner parcheado el fallo, mediante la adición de código para derivación de todo el código de procesamiento de correo si no se encuentra MTA.

¿Tiene límite de tamaño en el directorio de usuarios? Puede ser que desee tratar de volcar a la temperatura en primer lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top