CRONTAB没有完成svndump

时间:2010-02-24 05:40:53

标签: svn crontab

我刚刚发现我创建SVN存储库的自动转储已经提前中断,基本上只有一半的转储存在。这不是紧急情况,但我讨厌处于这种情况。它首先打破了自动备份的目的。

我正在使用的命令如下。如果我在终端中手动执行它,它就完成了; output.txt文件大小为16兆,包含所有335个修订版。但如果我把它留给crontab,它会在中途标记,大约8.1兆,只有前169个版本。

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

我实际上保存到一个过时的gzip压缩文件,服务器上没有空间,所以这不是磁盘空间问题。它似乎在两秒后保释,所以这可能是一个时间问题,但过去一个月的每一次文件大小都是一样的,所以我不认为那也是。 crontab是否在有限的内存空间内执行?

4 个答案:

答案 0 :(得分:5)

所以,我不知道真正的问题是什么,但如果我在转储时将svnadmin的STDERR路由到/ dev / null,一切顺利。我尝试使用“安静”标志(-q),它也成功了。我假设当从crontab运行的shell脚本在STRERR中遇到足够的文本时,它会停止执行它正在运行的任何内容并转到下一条指令。我已经在手动文件和预定文件上完成了MD5,它们完全相同。这似乎得到了解决。因此,如果有人自己遇到这个问题,这是我用来成功通过早期截断的shell脚本。这有点冗长。抱歉。

#!/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

通过超级用户crontab调用此脚本。

答案 1 :(得分:1)

首先,确保svnadmin位于cron作业的PATH环境变量中。您可能必须为/usr/bin/svnadmin或任何适当的路径指定完整路径。

此外,您可能希望查看svnadmin dump而不是svnadmin hotcopy,这是一个用于备份存储库的工具。

答案 2 :(得分:1)

我将此作为Debian cron包中的错误提交,因为我也在那里遇到它(在虚拟服务器下)。请参阅Debian中的错误#577133。如果没有找到MTA,Christian Kastner通过添加代码来绕过所有邮件处理代码来修补该错误。

答案 3 :(得分:0)

您对用户目录有大小限制吗?可能要先尝试将其转储到临时。