我希望将/var/repo
备份rsync更改为远程计算机。
我做了一个ssh密钥对,使我的机器可以在没有密码的情况下ssh登录到远程(忽略细节)。
我在com.ph.rsync2.plist
中添加了文件~/Library/LaunchAgents
。
内容是
<?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>com.ph.rsync2.plist</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/rsync</string>
<string>-avz</string>
<string>--rsh=ssh</string>
<string>/var/repo</string>
<string>flora@192.168.19.28:/var/ph_backups/</string>
</array>
<key>WatchPaths</key>
<array>
<string>/var/repo</string>
</array>
</dict>
然后我launchctl load com.ph.rysnc2.plist
。
当/var/repo
有任何更改时,它将触发rsync工作
但我总是在Console.app中获取错误日志
它读起来像
11/3/15 2:15:26.399 PM com.apple.xpc.launchd[1]:
(com.ph.rsync2.plist) Service only ran for 1 seconds. Pushing respawn out by 9 seconds.
我尝试将rsync命令移动到脚本,然后让launchd执行我的脚本。但它仍然是相同的
我无法弄清楚哪一部分设置会导致所有这些失败。
任何人都可以给我一个线索吗?
答案 0 :(得分:0)
评论会弄乱格式化,因此我将发布如何设置StandardErrorPath
密钥作为答案。
像这样修改你的工作定义:
<?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>com.ph.rsync2.plist</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/rsync</string>
<string>-avz</string>
<string>--rsh=ssh</string>
<string>/var/repo</string>
<string>flora@192.168.19.28:/var/ph_backups/</string>
</array>
<key>StandardErrorPath</key>
<string>/tmp/com.ph.rsync2.plist.stderr</string>
<key>WatchPaths</key>
<array>
<string>/var/repo</string>
</array>
</dict>
</plist>
重新加载并开始作业后检查文件/tmp/com.ph.rsync2.plist.stderr
。