Запустил удаленный rdiff-backup
У меня проблема с моим 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.
Я понятия не имею, в чем может быть проблема, разрешения также должны быть в порядке. Это беспокоило меня уже несколько дней...
Какие-либо предложения?
1 ответ
Я не замечаю ничего явно неправильного, поэтому первое, что я сделаю, - это сделаю ведение журнала более полным и посмотрим, указывает ли это на проблему - включите stderr, а также stdout, и для всего сценария, а не только для основного Команда rdiff-backup. Сделайте что-то подобное в начале скрипта:
NOW=$(date +"%y%m%d-%H:%M:%S")
exec &>/usr/local/server/log/$NOW
а затем удалите > $LOGFILE
часть позже, чтобы не допустить перезаписи. Если вам нужно еще больше деталей, добавьте set -x
рано, поэтому он напечатает каждую команду до ее выполнения.