ディレクトリをコピーする必要がある次のシナリオがあります。時にはリンクでも、時には同じ名前のディレクトリになることもあります。たとえば、これが初期設定であるとします。
ソース: /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