これが私がすることです:
まず、ssh (ユーザー名とパスワードでログイン) を使用できることをテストします。
$ ssh example.com
^D
SSH キーを作成します。
$ ssh-keygen
(パスワードは入力しないでください)
これにより、~/.ssh/id_rsa
(秘密鍵) と~/.ssh/id_rsa.pub
(公開鍵ファイル)が作成されます。
公開鍵 ( id_rsa.pub
) をリモート サーバー ( example.com
) に転送し、リモート サーバーで次の手順を実行する必要があります。
$ cat id_rsa.pub >> ~/.ssh/authorized_keys
$ rm id_rsa.pub
^D
これにより、公開鍵が許可された鍵のセットに追加されます。
ユーザー名とパスワードを使用せずに、ssh を使用してリモート サーバーに接続できるようになりました。
次に、rsync コマンドを使用します。以下で十分です。
$ rsync -avz -e ssh
--exclude '*.ht*' --exclude '*.sublime-*' --exclude 'cache/'
--exclude 'administrator/cache'
someUser@example.com:/directory/on/server /directory/on/local
(すべて 1 行で入力する必要があります)
ここで、これが機能することに満足したら、そのコマンドをシェル スクリプト ( rsync_script.sh
)に入れます。
launchctl
次に、それをスケジュールするために使用できます。
で~/Library/LaunchAgents/
作成com.example.rsync.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.rsync</string>
<key>KeepAlive</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/path/to/rsync_script.sh</string>
</array>
<key>StartInterval</key>
<integer>30</integer>
</dict>
</plist>
落とし穴のカップル:
- rsync_script.sh が実行可能であることを確認してください。
chmod 755 /path/to/the/rsync_script.sh
launchd
SSH キーを作成したユーザーが、 plistを設定したユーザーと同じであることを確認してください。