web-dev-qa-db-ja.com

パーティション間で大量のデータをコピーするための最良の方法

HP-UXサーバーの2レベル間でデータを転送しようとしています。これらの転送をいくつか実行する必要があります。そのうちのいくつかはほとんどがバイナリ(Oracleテーブルスペース...)であり、その他はより多くのテキストファイル(ログ...)です。ボリュームの使用データサイズは100Gbから1Tbの間です。また、これらのパーティションの一部でブロックサイズを1Kから8Kに変更します...

私が探しているもの:

  • データの整合性を保証します
  • 最速のデータ転送速度
  • ファイルの所有権と権限を保持します

今、私はdd、cp、rsyncについて考えましたが、それらを使用するのに最適なものとそれらを使用するための最良の方法がわかりません...

5
skinp

Ddは使いたくない。これは、ファイルシステム全体ではなく、1つのファイルまたはストリームで作業するためのものです。

rsyncはあなたが望むことをするように設計されていますが、前のポスターが述べたように、そして私のテストが示したように、それは最速ではありません。これは、次のようなことを行うためのものであるためです。「わかりました。ファイルAを見ています。ファイルAは宛先にありますか?もしそうなら、新しい、古い、同じですか?」などrsyncは、複数回実行することを目的としているため、少し複雑です...名前が示すように、2つの場所を同期するためのものです。

あなたが望むようなことをするために、私はtarコピーが速くて簡単で信頼できることを発見しました。 Tarはハードリンクについて知っています。 Tarはデバイスについて知っています。 Tarは、ファイルシステムで発生するほとんどすべての状況を処理します(非常に長いパスを除き、Gnu tarを使用していない場合は、パス名の先頭に/を付けることに注意する必要があります)。

とにかく、私はこれを行うことによって過去20年間99.98%の成功を収めてきました。

cd/my/source; tarcf-サブディレクトリ| (cd/destination/path; tar xf-)

...コピーするサブディレクトリが/ destination/pathに表示されます。

進行状況を確認したい場合は、その文字列の後半で「xf」の代わりに「xvf」を使用できます。

...私の0.02%の失敗は本当に長いファイルパスから来ました... :-(

Tarはファイルの整合性を保証しません。とはいえ、エラーメッセージが表示されない限り、非常に信頼性が高いことがわかりました。権限と所有権を適切に保持します。

4
Mike S

この投稿 をご覧ください。 tarを使用することを提案するいくつかの回答。 rsyncの使用を提案する人もいます。彼らは2台のマシン間でデータをコピーしようとしています。問題は似ていますが、ネットワーク経由ではなくローカルにファイルをコピーする必要があります。

2
Khaled

rsyncを使用することをお勧めします。これには、特にあなたの懸念のほとんどに対処する機能があります。適切なオプションを使用する場合(例:-a option)の場合、すべてのファイルの所有権、アクセス許可、および時間が保持されます。さらに、rsyncは自動的にチェックサムを使用して、転送されたすべてのファイルがそのまま宛先に到着することを確認するため、データの整合性が保証されます(実行が成功したと想定)。

rsyncmayが最適でない唯一のポイントは、特にcpのような軽量の代替品と比較した場合、速度ですが、多くの違いに気付くとは思えません。 、処理能力が非常に低い場合を除きます。

1
Steven Monday

基本的に3つのオプションがあります。

  1. パーティション/ブロックデバイス全体をコピーします
  2. ファイルシステム全体をダンプする
  3. データをコピーする内部ファイルシステム

バックアップする必要のあるものと必要な結果に応じて、3つのオプションのいずれかを選択します。あなたの特定のケースでは、オプションn.1(ブロックデバイスコピー)と ddrescue を組み合わせるのが良い方法だと思います。とにかく、利用可能なオプションのコレクションを見てみましょう。

ケース1:パーティションコピー
PRO:ブロックデバイス全体をコピーします。メモが残されていることは間違いありません。
CON:ブロックデバイスを気にすることは、ファイルを操作するよりも便利ではありません。間違ったブロックデバイスを選択すると、データが破壊される可能性があります。

ブロック開発全体のバイナリコピーが必要な場合は、ddまたは同様のツールを使用する必要がありました。他の非常に便利なツールは dcfldd (ハッシュ対応のddフォーク)と ddrescue (さらに高度なddのようなツール)です。

ケース2:ファイルシステムダンプ
PRO:ファイルシステム全体をコピーすると、ファイルシステム内のすべてのデータとメタデータが確実にバックアップされます。
CON:バックアップするファイルシステムが複数ある場合は、複数のパスを実行する必要がありました(ファイルシステム用に1つ)
ファイルシステムを処理するための便利なツールは FSArchive です。さらに、多くのファイルシステムには、コンテンツを効率的にダンプするためのユーティリティが統合されています(たとえば、XFSにはxfsdumpがあり、Ext2/3/4はdumpe2fsを使用します)。

ケース3:ファイルシステム内のデータをコピーします
PRO:ファイルシステム内からデータをコピーします。バックアップ対象を非常に具体的に選択できます。これにより、バックアップ/復元時間の短縮と小さなバックアップイメージが保証されます。
CON:何をどのようにバックアップするかを完全に理解する必要がありました。重要なメタデータ(例:所有者、権限、ACL、EAなど)には特別な注意を払う必要があります。
Rsync はここでのあなたの親友です。 Rsnapshot および rdiff-backup は、rsync/librsyncの上に構築された素晴らしいツールです。 Tar は、Unixシステム管理者のスイスナイフです。

0
shodanshok