从 osx 10.6.8 机器运行 rsync 作为 LaunchDaemon 将数据备份到 Ubuntu 11.1 服



>我正在从osx 10.6.8工作站运行rsync作为LaunchDaemon,将数据备份到Ubuntu 11.1服务器。由于我将 plist 文件放在/Library/LaunchDaemons 中,因此它以 root 身份运行。不幸的是,它失败了,因为该命令需要服务器的 root 密码。当我使用自己作为用户运行它时,rsync 使用我在两台机器之间为我的帐户设置的 ssh 密钥,但不幸的是,它无法在我的 osX 机器上构建完整的文件列表,因为我没有列出其他用户目录的权限。

我可以看到几种可能性,但我不知道该怎么做:

-1- 在 osx 上,我如何授予自己列出其他用户目录的权限,以便我可以以自己的用户名运行守护程序?

-2- 如果我以 root 身份运行 rsync 守护程序,我可以以安全的方式在两台机器的根帐户之间设置 ssh 密钥吗?或者,我是否可以以相对安全的方式自动将密码提供给恶魔作业?

我看到了在root帐户下使用密钥的两种简单可能性:

  1. 将您的 ssh 密钥复制到根账户的 ssh 目录 (/var/root/.ssh) 中。
  2. 在 ssh 命令中显式指定您的 ssh 密钥,如下所示:

    <key>ProgramArguments</key>
    <array>
        <string>/usr/bin/rsync</string>
        <string>-i</string>
        <string>/Users/thomashollier/.ssh/id_rsa</string>
        <string>...etc...</string>
    <array>
    

感谢您的提示。我将密钥复制到服务器的正确位置以获取根 ssh 密钥。我能够通过命令行从我的osX机器ssh和rsync到服务器,但不能直接从我的launchDaemon。命令行上的 rsync 命令需要 -e "ssh -i/path/to/my/key/id_dsa" 参数,除了给它一个 bash 命令之外,我还没有弄清楚如何在 plist 文件中包含这些引号,如下所示:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>/usr/bin/rsync -avz /Users/myusername/Documents -e "ssh -i /Users/myusername/.ssh/id_dsa" server:/media/Backup/backup/</string>
</array>

最新更新