tarアーカイブを作成せずにどのようにサイズを決定できますか?

tarアーカイブを作成せずにどのようにサイズを決定できますか?

毎晩私はLTO-7テープに複数のディレクトリを保管しています。各ディレクトリには約100個の大きな(2GB)ファイルが含まれています。

データが正しく書き込まれていることを確認するために、書き込まれたバイト数が書き込む必要があるバイト数と同じであることを確認しています。

まず、tarを実行してアーカイブのサイズを確認しました。

tar -cP --warning=no-file-changed $OLDEST_DIR | wc -c

次に、次のコマンドを使用してアーカイブを作成します。

tar -cvf /dev/nst0 --warning=no-file-changed --totals $OLDEST_DIR

ファイルサイズが一致した場合は、元のファイルを削除します。

問題は、テスト実行がファイルの内容全体を読む必要があり、数時間かかることがあります。理想的には、ディスクに時間を無駄にするのではなく、報告されたファイルサイズを使用し、必要なパディング/ソートを適用し、サイズを報告する必要があります。

du -sサイズが正確に一致しないため、または同様の方法を使用することはできません。たとえば、ファイルシステムではディレクトリを4096バイトとして、tarでは0バイトとして表示します。

または、ファイルが正しく作成されたことを確認するより良い方法はありますか?いくつかの警告を無視したため、tarの戻りコードを信頼できません(tar / mdraidで何らかのエラー処理)。

答え1

ドライブに書き込むコマンドに追加のコンテンツを追加すると、ファイルサイズが報告されますvtarすべてのファイルを2回読み取ることなく、ファイルサイズを解析して比較できます。

あなたはこれが適切な確認に代わることができないことを認識しなければなりません。バックアップの唯一の実際の検証は回復です。...LTOドライブに注意してください。作成中に確認してください。だから、ここで完全に盲目になったわけではありません。しかし、ファイルサイズの比較にのみ依存するだけではあまり多くはわかりません!

実際に適切なバックアップソフトウェアを使用することをお勧めします。棒骨テープバックアップに適しています。設定が完了したら確認してください。

答え2

適切なテープアーカイブソフトウェアを使用するのが賢明であることに同意しますが、失敗した場合は、実際のtar出力をチェックサムプログラムにパイプしてテープに接続するだけです。例えば、

tar -cPf - --warning=no-file-changed $OLDEST_DIR |
tee >(md5sum > sum.md5) |
dd of=/dev/nst0 

その後、テープを再読み込みしてチェックサムを比較できます。

dd if=/dev/nst0 | md5sum | diff - sum.md5

ddデバイスに適切なオプションを追加する必要があるかもしれません。私はいつでも再確認できるように、チェックサム値自体をテープの末尾に追加しました。もちろん、初期tarにエラーがあるかどうかを確認する必要があります。

関連情報