symリンクをたどりながらrsyncを実行します


67

システム上の別のメディアにある他のディレクトリへのシンボリックリンクを含むディレクトリがあります。

/opt/lun1/2011
/opt/lun1/2010
/opt/lun2/2009
/opt/lun2/2008
/opt/lun3/2007

ただし、シンボリックリンクは次のように表示されます。

/files/2011
/files/2010
/files/2009
/files/2008
/files/2007

rsyncシンボリックリンクに続くを実行するにはどうすればよいですか?

例えば:

rsync -XXX /files/ user@server:/files/

回答:


98

-Lrsync のフラグは、シンボリックリンクではなく、リンクされているファイルまたはディレクトリの内容を同期します。


1
これを行うと、すべての受信者のシンボリックリンクが削除され、送信者はファイルの再送信を開始します。
-ensnare

それはあなたが望むものではありませんか?シンボリックリンクだけでなく、実際のファイルを受信側に置きたいと思っていました。シンボリックリンクをシンボリックリンクとしてコピーしたいのですが、受信システムの「正しい」場所を指すように自動的に書き換えられますか?もしそうなら、それは「シンボリックリンクに続くrsync」が通常意味するものではありません。
MadHatter

4
こんにちは-これらはディレクトリです。これを-Kフラグで動作させました。
-ensnare

4
私はので、私はより多くの愚かな作っていると確信している...
ジョン・ハント

4
、明確にするために-LKあなたがシンボリックリンクのファイルとディレクトリの両方をフォローしたい場合
Mahn

17

この問題に出くわしました。また、rsyncがシンボリックリンクされたディレクトリをディレクトリとして扱うようにする場合は、Kオプションが必要です。

rsync -K /files/ user@server:/files/


また、--copy-危険なリンクオプションを追加したい場合があります
グレゴリー・マガーシャック

2

あなたは必要の両方を -Lし、-Kあなたが両側にシンボリックリンクを持っている場合、例えば、あなたはすでにあなたの第一rsyncが行われ、rsyncのを使用してバックアップを更新したいていました。

    -L, --copy-links            transform symlink into referent file/dir
    -K, --keep-dirlinks         treat symlinked dir on receiver as dir

このような場合、のみを使用する-Lと、受信側のシンボリックリンクが消去され、新しい実際のディレクトリが作成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.