2009-08-05 42 views
4

私たちがバックアップ用に使用している独自のソフトウェア(sadface)は、rsyncを使用してオフサイトの場所に同期する一連のイメージを生成します。生成されるファイルは次のようになります。rsyncを使用したミラーリングファイルの移動

a.bak 
b.bak 
c.bak 

私たちはこれらのファイルを同期させて、オフサイトマシンでまったく同じ構造を取得します。その後、バックアッププログラムが再び実行され、我々のような何かを得る:だからrsyncジョブの実行

archive/a.bak 
archive/b.bak 
c.bak 
d.bak 
e.bak 

を、私たちのようなもので終わる:

明らか
archive/a.bak 
archive/b.bak 
a.bak 
b.bak 
c.bak 
d.bak 
e.bak 

、我々は、オフサイトのマシンを好むだろうオンサイトマシンのように見えますが、混乱を避けてストレージスペースを節約できます。 rsyncに現場で起こった動きを反映させる方法はありますか、またはrsync以外のものを解決する必要がありますか?

答えて

-3

私たちが解決した解決策は、動きそのものを実行するスクリプトを書くことでした。

+2

あなたはそのスクリプトを共有してもらえますか?ありがとう –

+0

この回答はコミュニティには全く役に立たない。 -1 – AndrDevEK

3

ファイルが単純に「移動」したことを知的に検出する方法はわかりません。ただし、--deleteフラグを使用すると、ソースに存在しなくなったファイルを削除することができます。欠点は、ファイルが移動するたびにファイルを再コピーすることですが、少なくとも宛先の古い場所のスペースを無駄にすることはありません。

+1

ソースまたはターゲットのいずれの状態も保持しないため、Rsyncは移動されたファイルを検出できません。 – JesperE

+1

'--delete-after'はいい考えです。' --link-dest'を使うことも考えてください。 – Hasturkun

+2

ファイルシステムのデータはすべて必要な状態です。 Rsyncは、コンテンツがファイル内を移動してそれを効率的に処理するかどうかをすでに検出できます。 ( "rsync algorithm"を検索してください)私は、それが将来のバージョンのrsyncでファイルをまたがって動作するように一般化できない理由がわかりません。 –

0

--timesスイッチを使用して、両端が時計同期していることを確認したら、--updateと--deleteオプションを使用して、新しいファイルだけを転送し、存在しないはずのファイルを削除します。

フルオプションについては、rsync man pageを参照してください。

2

この問題は非常に巧妙な解決策です。余分なスペースが必要ですが、無駄なトラフィックを節約できます。私はそれを発見しましたhttps://lincolnloop.com/blog/detecting-file-moves-renames-rsync/

詳細はこちらを参照してください。ただし、基本的には、変更を加える前にハードリンクバックアップツリーを作成して元のツリーを変更します。 rsyncを実行すると、ハードリンクを保持するために余分なオプションが使用されます。これは、rsyncが重複ファイルを検出し、それらを再度コピーしないようにするためには十分です。

関連する問題