転送元ホストにおいてrsyncコマンドでリモートホストにホームディレクトリ全体を差分転送する場合は以下のようにする。

rsync -avz –delete –progress -e "ssh -i /root/.ssh/id_rsa_nopass" /home root@yourtargethost.com:/

-aは、下層ディレクトリも再帰的に処理し、シンボリックリンクをシンボリックリンクとして転送し、パミッションを保存し、更新日時を保存し、所有者とグループを保存し、デバイスファイルとスペシャルファイルを保持するオプションです。

-zは、転送する際に圧縮をかけるオプションです。

-vは、冗長メッセージをださせ、–progressは各進捗状況を表示させるオプションです。

–deleteは、転送元に存在しなくなったファイルを、転送先において削除するようにするオプションです。

-eで、リモートシェルを指定し、ここではsshとし、-iオプションによって、パスフレーズをなしにした秘密鍵を指定しています。この秘密鍵は転送元ホストで生成しておき、その公開鍵を転送先ホストのauthorized_keysに登録しておくのです。

これで、バッチなどでパスワードを訊かれずにrsyncコマンドを実行できます。expectコマンドなどでパスワードを自動で入力させるようなシェルを書くよりもスマートでしょう。