によって行われる必要はありませんが、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" .
最初のコマンドrsync
はsymlink
. 2番目のコマンドは実際のディレクトリ名を見つけ、2番目のコマンドはrsync
ディレクトリの内容を送信します。
答え2
これは、「mydir」にあり、「mydir」をある場所から別の場所に同期したい場合にのみ可能です。 Rsyncは、ユーザーが提供したパスの外にコピーすることはできません(以下のリンクを除く)。例えば
mydir/dirA ...
mydir/dirB ...
...