rsync:絶対シンボリックリンクを再配置する方法は?

rsync:絶対シンボリックリンクを再配置する方法は?

私はrsyncのマンページとserverfaultに関するいくつかの関連する質問を詳しく見ました。 -R、-L、および-lオプションを試しましたが、運がありません。

問題は:ローカルからリモートにディレクトリを送信するときにシンボリックリンクをローカルディレクトリに基づいて再配置することによってリモートシステムのターゲットディレクトリに基づいてオプション(またはオプションの組み合わせ)がありますか?

以下は、私が送信したいコンテンツの最小限の例です。

ローカルディレクトリ: /home/bob/foo

/home/bob/foo/a --> /home/bob/foo/bar
/home/bob/foo/bar

これが私が望む方法です

リモートディレクトリ: /u/apps/foo

/u/apps/foo/a --> /u/apps/foo/bar
/u/apps/foo/bar

たとえば、rsync -az /home/bob/foo/ remote:/u/apps/foo/次のように終了します。

/u/apps/foo/a --> /home/bob/foo/bar
/u/apps/foo/bar

どちらの場合も、リモートシステムに存在するかどうかは重要ではありません/home/bob/foo/bar。結果は確かに私が望むものではありません。

答え1

リンクが絶対パスを指している場合、これをバイパスする方法はありません。シンボリックリンクを相対的に作成することでこの問題を解決できます。

/ホーム/ボブ/foo/a --> ./bar
/ホーム/ボブ/foo/バー

しかし、これは、これらのリンクの生成方法やリンク数によっては難しい場合があります。

関連情報