4

バックアップに使用しているプロプライエタリ ソフトウェア (sadface) はrsync、オフサイトの場所に同期するために使用する一連の画像を生成します。生成されたファイルは次のようになります。

a.bak
b.bak
c.bak

そのため、それらを同期して、オフサイトのマシンでまったく同じ構造を取得します。次に、バックアップ プログラムが再度実行され、次のような結果が得られます。

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

したがって、rsyncジョブが実行され、最終的には次のようになります。

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

明らかに、混乱を避けてストレージスペースを節約するために、オフサイトのマシンがオンサイトのマシンと同じように見えることを好みます. rsync現場で起こった動きを反映させる方法はありrsyncますか?

4

3 に答える 3

3

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

于 2009-08-05T10:26:06.127 に答える
2

この問題には非常に賢い解決策があります。余分なスペースが必要ですが、無駄なトラフィックを大幅に削減できます。https://lincolnloop.com/blog/detecting-file-moves-renames-rsync/で見つけました

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

于 2014-04-14T05:31:11.917 に答える
0

--times スイッチを使用し、両端でクロックが同期されていることを確認してから、 --update および --delete オプションを使用して、新しいファイルのみを転送し、存在しないはずのファイルを取り除くことができます。

完全なオプションについては、 rsync の man ページを参照してください。

于 2009-08-05T10:26:39.433 に答える