我的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身份运行。
我不知道可能是什么问题,权限也应该没问题。这已经困扰了我好几天了......
有什么建议吗?
答案 0 :(得分:1)
我没有发现任何明显错误的内容,所以我要做的第一件事就是让日志更加完整,看看是否表明问题 - 包括stderr和stdout,以及整个脚本,不是只是主要的rdiff-backup命令。在脚本的开头做这样的事情:
NOW=$(date +"%y%m%d-%H:%M:%S")
exec &>/usr/local/server/log/$NOW
然后删除> $LOGFILE
部分以防止覆盖。如果您需要更多详细信息,请尽早添加set -x
,这样它就会在执行之前打印每个命令。