rsyncはリンクを介してディレクトリをコピーできますか?

rsyncはリンクを介してディレクトリをコピーできますか?

ディレクトリをコピーする必要がある次のシナリオがあります。時にはリンクでも、時には同じ名前のディレクトリになることもあります。たとえば、これが初期設定であるとします。

ソース: /workspace/test/source/dir1 -> /tmp/test1

ターゲット: /workspace/test/dest/dir1 -> /tmp/test1

ここで、ソースからリンクを削除し、同じ名前のフォルダを作成するとします。

ソース: /workspace/test/source/dir1

ターゲット: /workspace/test/dest/dir1 -> /tmp/test1

私が今やりたいことはrsyncを使ってコピーすることです。物理フォルダリンクを「オーバーライド」して、次のようにします。

ソース: /workspace/test/source/dir1

対象:/ワークスペース/テスト/dest/dir1

rsyncを介してこれを行う方法はありますか? 1レベル上のrsync、つまり/workspace/test/sourceを使用すると機能することがわかります。残念ながら、最低レベルのrsyncを使用する必要があります。

ご回答ありがとうございます。

ベストアンサー1

これがデフォルトの動作ですrsync

はい

## Preamble
$ cd /tmp
$ mkdir src dst stuff
$ touch stuff/{a,b,c}
$ ( cd src && ln -s /tmp/stuff dir1 )
$ ( cd dst && ln -s /tmp/stuff dir1 )

## Symlinks are retained
$ cd /tmp
$ rsync -avv src/ dst/

## Change scenario
$ ls -l src
$ rm src/dir1 && cp -a /tmp/stuff src/dir1

## Symlinks are replaced according to the source
$ cd /tmp
$ rsync -avv src/ dst/
$ ls -l dst

おすすめ記事