Rsync -avzHPはハードリンクとしてコピーするのではなく、ハードリンクを追跡します


13

rsnapshotを使用して、「作業」共有の毎時/毎日/毎週/毎月のバックアップを作成します。今、rsyncを使用して、バックアップディレクトリ全体を外部ドライブにコピーしようとしています。

画面セッション内でこのコマンド/パラメーターを使用しました(はい、rsync-exclude.txtはコマンドを実行するディレクトリにあります)

rsync -avzHP --exclude-from 'rsync-exclude.txt' /share/backup/ /share/eSATADisk1/backup/;

すべてがQNAP TS-439で実行されており、内部ドライブはEXT4でフォーマットされた単一のディスク(RAIDなし)、外部ドライブはEXT3でフォーマットされています。

起こることは次のとおりです。Rsyncはすべてのハードリンクに従い、更新されたハードリンクを外部ドライブに再作成する代わりに実際のファイルコピーします。私はすぐにこれを認識しなかったので、外部ドライブは同じファイルのxxxコピーでゴミ箱に入れられました。

私が達成したいのは、rsnapshotによって生成されたファイル構造全体を外部ドライブにコピーして、スペースを節約するためにハードリンクを保持することです。注:これは必ずしもrsyncを使用して実行する必要はありません。

あなたのアイデアと時間をありがとう。貴重な時間をありがとうございました。

更新: rsnapshotはシンボリックリンクを使用せず、ハードリンクを使用しているため、Rsnapshotに応じたハードリンク構造を複数の宛先に保持する(またはハードリンク構造を維持する) -Hオプションを使用するようになりましたが、まだ機能しません...ここで何が欠けていますか?

更新2:ここでこのトピックに関する別の意見/ステートメントを見つけました:rsync with --hard-links freezes Steven Mondayは、ハードリンクを含む大きなファイル構造をrsyncしようとしないことを提案します。したがって、おそらく、より良い解決策は、バックアップしようとしているデータ構造の.imgを作成することです。どう思いますか?


私はあなたとまったく同じことをしています!+1。DDのアプローチしようとします
mmalmeida

回答:


10

rsyncコマンドの-H(または--hard-links、元のハードリンク構造を維持し、あなたのファイルシステムのコピーを作成するために:)オプションは、理論的には、あなたが簡単に、ある、達成しようとしているものでしょう。別の同様の質問への回答で述べたようにソースファイルシステムがハードリンクの複雑さの特定のしきい値を超えると、このオプションは失敗する運命にあります。

そのしきい値の正確な場所は、RAMとハードリンクの合計数(およびおそらく他の多くの数)に依存する可能性がありますが、正確に定義しようとしても意味がないことがわかりました。どのような本当に重要なのは、閾値は、実世界の状況で交差するすべて余りに容易であることである、とあなたがいることを知ることができませんしている日は、あなたが実行しようとすることを来るまで、それを交差させrsync -aHたりcp -a闘争することを、最終的に失敗しました。

私がお勧めするのはこれです。強くリンクされたファイルシステムを、ファイルとしてではなく、1つのユニットとしてコピーします。つまり、ファイルシステムパーティション全体を1つの大きなBLOBとしてコピーします。これを行うためのツールは多数ありますが、最も一般的なのはddです。

標準のファームウェアでは、QNAP NASがdd組み込まれている必要がありますfdisk。を使用してfdisk、少なくともソースパーティションと同じ大きさのパーティションを宛先ドライブに作成します。次に、を使用ddして、新しく作成した宛先パーティションにソースパーティションの正確なコピーを作成します。

ddコピーの進行中、コピー元のファイルシステムが変更されていないことを確認する必要があります。コピー先でコピーが破損しないようにしてください。そのための1つの方法はumount、コピープロセスを開始する前にソースにアクセスすることです。別の方法は、ソースを読み取り専用モードでマウントすることです。


rsnapshot backupsディレクトリの外部でハードリンクを使用しないと仮定した場合、引き続き問題が発生しますか?ハードディスクの空き容量は本当に不足していますが、rsnapshotバックアップを作成したいです。現在、ディスクがいっぱいになっています。
スリダールサルノバト

私はあなたが指摘した状況にぶつかったと思います。rsyncで作成された多くのスナップショットを含むバックアップディレクトリがあります。多くのハードリンクを持つ多くのファイルがあります。合計ディスク使用量は約200Gです。「rsync -avH」を使用して別のパーティションにコピーしています。しかし、4(または5?)日と夜の後、コピープロセスはまだ実行中です。ソースディレクトリのハードリンクの総数によってrsyncが完全に混乱していると思います。
Guangliang

Ubuntu 18.04では--hard-links(「s」付き)です。
-nobar

1

-l シンボリックリンク用ですが、なぜハードリンク用に何をするのでしょうか?

(申し訳ありませんが、これはコメントではなく回答です。私にはまだコメント権がなく、この回答には回答が必要です)

コメントである必要がある別の注意:これはすべてネイティブハードウェアですか、それともVM上にありますか、ネットワークマウントですか?

編集

ハードリンクを使用している理由に関する以前のコメントを無視して、rsnapshotコメントを見逃しました。

最初に2つのローカルディレクトリのローカルディスク間でrsyncをテストし、次にリモートディスクに対してテストするテストがあると便利です。この小さなテストでは、-Hオプションwokrsが期待どおりに表示されます。の-iオプションlsはiノードを表示するため、余分なコピーなしでリンクが保存されていることがわかります。

$ rsync -avzHP src/ dest
sending incremental file list
created directory dest
./
file111_prime.txt
           9 100%    0.00kB/s    0:00:00 (xfer#1, to-check=0/3)
file111.txt => file111_prime.txt

sent 156 bytes  received 59 bytes  430.00 bytes/sec
total size is 18  speedup is 0.08

$ ls -liR
.:
total 8
414044 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 dest
414031 drwxrwxr-x. 2 nhed nhed 4096 Feb 25 09:58 src

./dest:
total 8
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414046 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

./src:
total 8
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111_prime.txt
414032 -rw-rw-r--. 2 nhed nhed 9 Feb 25 09:57 file111.txt

rsync -avzHP src/ host:/tmpリモートホストに対する後続のテストでは、ハードリンクが維持されたままでした


rsnapshotがシンボリックリンクではなくハードリンクを使用していることをさらに調査した結果、あなたはまったく正しいです。それに応じて質問を更新しました。そのため、ソリューションは-Hを使用し、ディレクトリ全体をコピーして(私が行うように)rsnapshotによって構築されたハードリンク構造を保持する必要がありますが、それでも動作しません。daily.0のすべてをコピーし始めると、変更されたファイルだけでなく、コピーされます。//そして、はい、この操作にはQnap TS-439と外部Lacieドライブを使用しています。
woerndl

ソースに2つのファイルのみがハードリンクされたテストソースディレクトリとテストデスティネーションディレクトリを持つことで、この問題を軽減できますか?また、どのようにリンクが正しく処理とのためにあなたが長いテキストを読めば、最後に、なぜ、ハードリンクを使用していなかったと判断している-Hマニュアルページにあなたが私に言うことになる、いくつかの注意点があることがわかります、試してみますハードリンクから離れるには
...-nhed

テストケースをセットアップし、最新の状態に保ちます。これまでのアイデアに感謝します。
woerndl

1

これはロングショットですが、別の解決策が見つからない場合は、USBドライブをEXT4としてフォーマットすることをお勧めします。たぶんこれが問題かもしれません:https : //bugzilla.samba.org/show_bug.cgi?id=7670

ソースフォルダーに十分なハードリンクがあり、宛先ボリュームが十分に小さい場合、rsync --hard-linksを使用したコピーは失敗する可能性があります。宛先のハードリンクの最大数を使い果たすことでRsyncが失敗します<...>実際の問題はrsyncではなく、基礎となるファイルシステムです。


私の問題にご参加いただきありがとうございます!これはサンバに関連しているように見えます。ドライブはNASに直接接続されています。
woerndl

1
こんにちは、この問題はSamba関連ではありません。それはrsyncウェブサイトのホームです:rsync.samba.org
Motsel

0

-lオプションを追加しようとしましたか?

マニュアルページに含まれていると書かれて-aいますが、マニュアルページが常に100%正確であるとは限りません。


ご意見をいただきありがとうございます。私は質問を更新しなければなりませんでした。Rsnapshotはシンボリックリンクではなくハードリンクを使用して増分バックアップ構造を構築しています。とにかく-lは役に立たないが、残念ながら-Hも動作しない。
woerndl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.