私のRHEL6サーバーペアでSSHを使用して、server-1からServer-2へのrsyncをテストしました。すべてが期待どおりに動作します。ただし、AディレクトリのA / x.fileファイルをServer-1の/home / user B /に移動すると、--delete(または同様のオプション)を使用して同じrsyncを繰り返しても、Aのxは削除されません。 file/ と x.file を Server-2 の B/ にバックアップします。 rsyncスクリプトは次のとおりです。
rsync -avhu -e ssh --delete home/user/ remote_user@remote_host:/home/user/.
SSHはパスワードなしで設定されます。これらのオプションを別の順序で試しましたが、そのうち何も機能しませんでした。これは、x.fileがまだターゲット(server-2)のA /の下にあり、B /にはないことを意味します。何が間違っていますか?
答え1
以下は、スクリプトで選択したオプションを使用してrsyncに目的のアクションを実行させる方法に関する一般的なガイドラインです。
ディレクトリからディレクトリの内容をコピーします。源泉リモートディレクトリ目的地ディレクトリ(最初)で次のことができます。
rsync --archive --verbose --human-readable source -e ssh username@servername:/home/user/ .
以下をいくつか変更した後源泉同期したいディレクトリ目的地ディレクトリ、実行:
rsync --archive --verbose --human-readable --delete source/ -e ssh username@servername:/home/user/source .
記録:
ソースディレクトリをターゲットディレクトリに最初にコピーしたとき欲しくないソースコードの後に/(スラッシュ)を追加する必要があります。
時同期ソースディレクトリから宛先ディレクトリへ、するソースの後に/(スラッシュ)を追加する必要があります。 /はソースディレクトリの内容を表し、いいえディレクトリ自体。
--dry-runオプションを使用してスクリプトをテストできます。
答え2
このわずかに修正されたコードは私にとって効果的です。
rsync -avhu -e ssh --delete /home/user/ remote_user@remote_host:/home/user/.
プロダクションコードがそのhome/user/
代わりにそれを参照している場合、/home/user/
これは簡単に失敗の原因になる可能性があります。また、エラーが発生します。rsync: change_dir "/home/user//home/user" failed: No such file or directory (2)