CRONTAB не заканчивает svndump - PullRequest
       9

CRONTAB не заканчивает svndump

2 голосов
/ 24 февраля 2010

Я только что обнаружил, что автоматизированные дампы, которые я создавал для моего репозитория 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 ]

5 голосов
/ 27 февраля 2010

Итак, я не знаю, в чем здесь реальная проблема, но если я направлю STDERR svnadmin в / dev / null, когда я выполню дамп, все будет хорошо. Я попытался использовать «тихий» флаг (-q), и это также успешно. Я предполагаю, что когда скрипт оболочки, запущенный из crontab, встречает достаточно текста в STRERR, он останавливает выполнение всего, что он выполняет, и переходит к следующей инструкции. Я сделал MD5 для ручного файла и запланированного файла, и они идентичны. Кажется, это решено. Так что, если кто-то сталкивается с этой проблемой самостоятельно, это сценарий оболочки, который я использовал, чтобы успешно преодолеть раннее усечение. Это немного многословно. Сожалею.

#!/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 голос
/ 23 апреля 2010

Я представил это как ошибку в пакете Debian cron, так как я также испытывал это там (под vserver). Смотрите ошибку # 577133 в Debian. Кристиан Кастнер исправил ошибку, добавив код для обхода всего кода обработки почты, если MTA не найдено.

1 голос
/ 24 февраля 2010

Прежде всего, убедитесь, что svnadmin находится в переменной окружения PATH задания cron. Возможно, вам придется указать полный путь для /usr/bin/svnadmin или любой другой подходящий.

Кроме того, вместо svnadmin dump вы можете рассмотреть svnadmin hotcopy, инструмент, предназначенный для резервного копирования хранилища.

0 голосов
/ 24 февраля 2010

У вас есть ограничение на размер каталога пользователей? Может быть, сначала попытаться сбросить его в временную папку.

...