質問: シンボリックリンクをコピーし、rsyncを使用するように指定します これはrsyncで行う必要はありませんが、これを行うためのスクリプトを記述する必要はなく、rsyncは私が望むものに非常に近いです。rsync -a(または-l)はシンボリックリンクを保持でき、-lは、シンボリックリンクを逆参照して、通常のファイル/ディレクトリであるかのようにコピーできます。しかし、シンボリックリンクを保持し、リンクが指すファイル/ディレクトリをコピーすることは可能ですか?ここに例があります。次のフォルダ階層があるとします。dira/link_to_file -> ../dirb/file dira/link_to_dir -> ../dirc dirb/file dirb/not_this_file dirc/file dirc/file2 dird/others そして私がするときrsync -ar dira dest(または何か他のもの)、これらをdestに正確に表示させたい:dira/link_to_file -> ../dirb/file dira/link_to_dir -> ../dirc dirb/file dirc/file dirc/file2 これはrsyncで可能ですか?ありがとうございました。絶対パスを持つ、またはソースディレクトリの外部を指すシンボリックリンクは無視できると仮定します。
回答: シンボリックリンク名がわかっていて、linkおよびtargetを転送する場合は、次のことができます。rsync -a 'symlink' . realdir="$(basename "$(readlink -f 'symlink')")" rsync -a "$realdir" . 最初のrsyncはsymlinkのみを転送します。 2番目のコマンドは実際のディレクトリ名を検索し、2番目のrsyncはディレクトリの内容を転送します。