我刚刚发现,我为SVN存储库创建的自动转储很早就被切断了,基本上只有一半的转储在那里。这不是紧急情况,但我不喜欢这种情况。它首先违背了自动备份的目的。
我使用的命令如下所示。如果我在终端中手动执行它,它可以很好地完成;output.txt文件大小为16MB,包含所有335个修订版。但如果我把它留给crontab,它会在中途退出,大约810万,只有前169个版本。
# m h dom mon dow command
18 00 * * * svnadmin dump /var/svn/repos/myproject > /home/andrew/output.txt 我实际上保存为一个过时的gzipped文件,并且服务器上的空间并不短缺,所以这不是磁盘空间问题。它似乎在两秒后就退出了,所以这可能是一个时间问题,但在过去的一个月中,文件大小每次都是相同的,所以我认为也不是这样。crontab是否在有限的内存空间内执行?
发布于 2010-02-27 15:39:30
所以,我不知道这里真正的问题是什么,但是如果我在转储时将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调用。
发布于 2010-02-24 13:51:12
首先,确保svnadmin位于cron作业的PATH环境变量中。您可能需要指定/usr/bin/svnadmin的完整路径或任何适当的路径。
此外,除了svnadmin dump之外,您可能还想了解svnadmin hotcopy,这是一个用于存储库备份的工具。
发布于 2010-04-23 07:37:11
我在Debian cron包中将其作为bug提交,因为我在那里也经历过(在vserver下)。参见Debian中的bug #577133。Christian Kastner通过添加代码,在没有找到MTA的情况下绕过所有邮件处理代码,从而修复了这个错误。
https://stackoverflow.com/questions/2323933
复制相似问题