代码之家  ›  专栏  ›  技术社区  ›  Andrew

CRONTAB没有完成svndump

  •  2
  • Andrew  · 技术社区  · 16 年前

    我刚刚发现,我一直在为我的SVN存储库创建的自动转储已经提前停止,基本上只有一半的转储存在。这不是紧急情况,但我讨厌这种情况。它首先违背了自动备份的目的。

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

    实际上,我保存到一个日期为gzip的文件中,并且服务器上不存在空间不足的问题,因此这不是磁盘空间问题。它似乎在两秒钟后退出,所以这可能是一个时间问题,但在过去的一个月里,每次文件大小都是相同的,所以我认为也不是这样。crontab是否在有限的内存空间内执行?

    4 回复  |  直到 16 年前
        1
  •  5
  •   Andrew    16 年前

    所以,我不知道这里真正的问题是什么,但是如果我在转储时将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调用。

        2
  •  1
  •   Avi    16 年前

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

    还有,而不是 svnadmin dump ,你可能想调查一下 svnadmin hotcopy 这是一个用于备份存储库的工具。

        3
  •  1
  •   Bob Feldbauer    16 年前

        4
  •  0
  •   sha    16 年前

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