今、次のコマンドがあります。
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