私は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/バー
しかし、これは、これらのリンクの生成方法やリンク数によっては難しい場合があります。