rsyncを使用してシンボリックリンクとそれが指す場所をコピーします。

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?ありがとうございます。

絶対パスがあるか、ソースディレクトリの外部を指すシンボリックリンクは無視される可能性があるとします。

答え1

シンボリックリンク名を知って送信したい場合協会そしてターゲットあなたはできます:

rsync -a 'symlink' .
realdir="$(basename "$(readlink -f 'symlink')")"
rsync -a "$realdir" .

最初のコマンドrsyncsymlink. 2番目のコマンドは実際のディレクトリ名を見つけ、2番目のコマンドはrsyncディレクトリの内容を送信します。

答え2

これは、「mydir」にあり、「mydir」をある場所から別の場所に同期したい場合にのみ可能です。 Rsyncは、ユーザーが提供したパスの外にコピーすることはできません(以下のリンクを除く)。例えば

mydir/dirA ...
mydir/dirB ...
...

関連情報