【问题标题】:launchd remote rdiff-backup启动远程 rdiff 备份
【发布时间】:2014-10-16 04:25:33
【问题描述】:

我的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 身份运行。

我不知道可能是什么问题,权限也应该没问题。这已经困扰我好几天了...

有什么建议吗?

【问题讨论】:

    标签: macos launchd rdiff-backup


    【解决方案1】:

    我没有发现任何明显错误,所以我要做的第一件事是使日志记录更加完整,看看这是否表明问题 - 包括 stderr 和 stdout,对于整个脚本,而不是只是主要的 rdiff-backup 命令。在脚本的开头做这样的事情:

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

    然后删除&gt; $LOGFILE 部分以防止其被覆盖。如果您需要更多详细信息,请尽早添加set -x,以便在执行之前打印每个命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-26
      • 2018-07-22
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      相关资源
      最近更新 更多