rsync:シンボリックリンク物理パスのコピーとシンボリックリンクの再生成

rsync:シンボリックリンク物理パスのコピーとシンボリックリンクの再生成

今、次のコマンドがあります。

rsync --copy-links -r src dest

これにより、src内のすべてのシンボリックリンクのオブジェクトファイルがコピーされ、destにそのファイルのコピーが作成されます。

私の質問は - 新しいターゲットにシンボリックリンクを再作成する方法はありますか?

頑張った

rsync --links -r src dest

しかし、これはあまり効果がないようです。

私のsrcディレクトリが次のようになっているとしましょう。

src/
  foo/
  bar/  # symlinked dir
  baz/

答え1

--linksそうだねただし、以前に使用したことがある場合は、--copy-linksターゲットに実際のディレクトリ(コンテンツを含む)が作成されます。後で実行すると、--linksこれらのディレクトリを削除してリンクに置き換えることはできません。

$ rsync -r --copy-links src/ dest/ # creates a real directory in /dest
$ ls -l dest
drwxr-xr-x 2 user staff 4096 Dec 18 00:47 bar

今リンクをコピーしてみてください...

$ rsync -r --links src/ dest/
cannot delete non-empty directory: bar
could not make way for new symlink: bar
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9]

ああ、まだありません。まず、ターゲットディレクトリを削除する必要があります。

$ rm -rf dest/bar
$ rsync -r --links src/ dest/
$ ls -l dest
lrwxrwxrwx 1 user staff 6 Dec 18 00:52 bar -> ../bar

関連情報