- - PR -
rsyncでシンボリックリンクの同期の取り方
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-09-29 16:30
rsyncコマンドでシンボリックリンクについて意図したように同期がとれず、てこずっています。
現象としては以下のようになります。 ----------------------------------- rsync元のディレクトリ> ServerA:/hoge/foo/ rsync先のディレクトリ> ServerB:/bar/backup 実行コマンドを rsync -apovz ServerA:/hoge/foo/ ServerB:/bar/backup として実行したときに、 ServerBに中にファイルやディレクトリのある実ディレクトリがあり ServerAに同名のシンボリックリンクがあった場合 ログに以下のエラーが表示され、シンボリックリンクが作成されません。 rsync: delete_file: rmdir "/bar/backup/aaaa/bbbb" failed: Directory not empty (39) rsync: symlink "/bar/backup/aaaa/bbbb" -> "/hoge/foo/dddd/eeee" failed: File exists (17) ----------------------------------- つまり同期の取れたServerAとServerBの両方にあった実ディレクトリを ServerAのディレクトリだけ削除し、同名のシンボリックリンクを作成した後に rsyncコマンドを実行すると起こります。 中にファイルやディレクトリがない場合は rmdir コマンドで削除されるため 正常にシンボリックリンクが作成されます。 また、エラーが発生したのち、手動でServerBの実ディレクトリを削除し、 ServerAと同じようにシンボリックリンクを作成すれば 後のrsyncコマンドはエラーが発生せずに終了します。 これを手動ではなくrsyncコマンド実行時に正常に同期を取れるようにしたく 思い当たるオプションを試してみたのですが上手くいきませんでした。 この問題の解決方法をご存知の方はいらっしゃいませんか。 |
|
投稿日時: 2008-10-01 14:14
すみません。
自己解決しました。 -r オプションと --delete オプションを付けると意図した動作となりました。 |
1