запустить удаленное резервное копирование rdiff

У меня возникла проблема с моим backupscript, который не работает с OS X launchd.

Это мой скрипт, который я хотел бы запустить:

#
# backupscript
#
NOW=$(date +"%y%m%d-%H:%M:%S") 
LOGFILE=/usr/local/server/log/$NOW
SOURCE=/
DESTINATION=remote@remote::/media/backup
INCLUDE_LIST=/usr/local/server/include-list
KEEP_TIME=40B

RDIFF_BACKUP=/usr/local/bin/rdiff-backup

$RDIFF_BACKUP --print-statistics -v5 --include-globbing-filelist $INCLUDE_LIST $SOURCE $DESTINATION > $LOGFILE
$RDIFF_BACKUP --remove-older-than $KEEP_TIME $DESTINATION

Как видите, в этом нет ничего особенного, и он работает, когда не используется launchd.

Однако, когда я запускаю его с launchd, это не так... XML-файл выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>backup.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>/usr/local/server/backup.sh</string>
    </array>
    <key>LowPriorityIO</key>
    <true/>
    <key>AbandonProcessGroup</key>
    <true/>
    <key>Nice</key>
    <integer>1</integer>
    <key>StartCalendarInterval</key>
    <array>
        <dict>
            <key>Hour</key>
            <integer>10</integer>
            <key>Minute</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Hour</key>
            <integer>14</integer>
            <key>Minute</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Hour</key>
            <integer>18</integer>
            <key>Minute</key>
            <integer>0</integer>
        </dict>
        <dict>
            <key>Hour</key>
            <integer>22</integer>
            <key>Minute</key>
            <integer>54</integer>
        </dict>
    </array>
</dict>
</plist>

Сценарий работает, но резервная копия на удаленный хост не создается. backup.plist находится в папке /Library/LaunchDeamons, поэтому его следует запускать от имени пользователя root.

Я понятия не имею, в чем может быть проблема, разрешения также должны быть в порядке. Меня это беспокоит уже несколько дней...

Какие-либо предложения?


person christofferp    schedule 25.08.2011    source источник


Ответы (1)


Я не замечаю ничего явно неправильного, поэтому первое, что я сделал бы, это сделал бы протоколирование более полным и посмотрел бы, указывает ли это на проблему - включая stderr, а также stdout, и для всего скрипта, а не только для основного Команда rdiff-backup. Сделайте что-то вроде этого в начале скрипта:

NOW=$(date +"%y%m%d-%H:%M:%S") 
exec &>/usr/local/server/log/$NOW

а затем удалите часть > $LOGFILE позже, чтобы предотвратить ее перезапись. Если вам нужно еще больше деталей, добавьте set -x заранее, чтобы он печатал каждую команду до ее выполнения.

person Gordon Davisson    schedule 26.08.2011