これはで行う必要はありませんが、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ですか?ありがとうございました。
絶対パスを持つ、またはソースディレクトリの外部を指すシンボリックリンクは無視できると仮定します。
良いキャッチ。私の使用例では、ツリーの外部へのリンクポイントはなく、リンクに絶対パスはありません。
—
Wei-Yin
私はそれについて考えれば考えるほど、標準的なユーティリティではこれを実行できないと思います。一般的なケースでは、それはあなたがそのターゲット(シンボリックリンクが含まれているシンボリックリンクへのシンボリックリンクまたはより一般的にシンボリックリンクを持っている場合は、単一のソース与えられた目的地を大量に作成する必要があります例えば
—
Gilles「SO-邪悪なことをやめなさい」
a -> b、b -> c/foo、c -> d/e:コピーへの要求aもコピーする必要がありますb、c、c/foo、d、d/eおよびd/e/foo)。
@ギレス:はい、あなたは正しいです。リンクを追跡すると、まだソースディレクトリ内にある限り、多くのファイルが含まれる可能性があります。
—
魏殷
dirA/linkへのシンボリックリンクである../dirB/file場合、これはコピーとして扱われるべきdirB/fileまでdest/dirB/fileとdirA/linkしますdest/dirA/link。dirA/linkへのリンクはどうなり../../another_fileますか?一般dirA/linkに、ディレクトリツリーの上位にあるディレクトリを指している場合はどうなりますか?