web-dev-qa-db-ja.com

ddを使用して部分的なイメージバックアップを実行する機能はありますか?

この質問は 数年前のもの に関連しており、部分的なイメージのバックアップを行う方法を探していました。その部分は決して答えられなかったので、これはそれのための専用の質問です。

問題

  • 私はWindowsパーティションを縮小することを計画し、保険として最初にイメージのバックアップを作成したいと思いました。リカバリが必要な場合は、バックアップを縮小されたパーティションに復元する必要があります。

  • 目的は現状のままのシステムの保険であったため、何かを変更したり、新しいリスクを導入したりするような変更を加える前に、バックアップは「未使用」のコンテンツである必要がありました。

  • Windowsパーティション縮小ツールは、パーティションをどれだけ縮小するかを事前に通知します。収縮後に残るパーティションの部分だけの画像が必要でした。

  • 私はファイルベースのバックアップを持っていたので、縮小領域の外側にあり、バックアップによってキャプチャされない可能性のあるファイルについては心配していませんでした。

ソリューションコンセプト

従来の通念では、これらの要件はddを使用して満たすことはできないと言われています。ただし、危険であることが十分にわかっているので、解決策と思われるアプローチがあります(ddベースの解決策はLinux内から実行されると想定しています)。

アイデア:

  • ddには、開始位置と終了位置を指定するために使用できるパラメーターがあります。
  • パーティション管理ツールは、そのパーティションがドライブのどこにあるかを明らかにします。
  • Windowsパーティション縮小ツールは、Windowsパーティションをどれだけ縮小するかを表示します。

それがddパラメータを計算するための原材料のようです。ピースをまとめることは、私が以前にやったことのないことです。したがって、質問は次のとおりです。

  • パーティションの縮小部分を反映するddパラメータを決定する方法
  • その関連部分をバックアップドライブにコピーするためのddコマンド
  • そのイメージを元のドライブの同じ場所に復元するためのddコマンド

警告

ベアメタルからパーティションの目的のセクションを定義してコピーすることは、簡単なはずです。ただし、明確ではない1つのポイントは、NTFS MFTが元のパーティションサイズに関連付けられているかどうかです。そのため、縮小されたパーティションに復元すると、少なくともchkdskのような機能を超えて、破損したままになります。修復。

質問の目的

最終的な目的は、説明されているように、Windowsパーティションの部分的なイメージバックアップを作成することです。この問題は元の質問で解決策を引き付けることはなかったので、この質問は潜在的なアプローチの種を提供することを目的としています。しかし、私のコンセプトはうまくいかないかもしれません。したがって、ddソリューションがこの質問の焦点ですが、組み込みまたは一般的に利用可能な無料ツールを使用した代替ソリューションを排除するつもりはありません。したがって、成功する答えは次のようになります。

  • 実用的なddベースのソリューション
  • ddベースのソリューションが機能しない可能性がある(または少なくとも確実に機能することを信頼できない)理由の信頼できる決定的な説明
  • 目的を達成する代替ソリューション。

補遺

Kamil Maciorowskiの回答は、別の質問、 ハードディスクから使用中のスペースのみを複製する を識別します。これはかなり似ていますが、重複しているとは思いません。いくつかの重要な違い:

  • その質問は、使用済みスペースのみを複製しようとしています。これは、パーティションの特定のセクションのクローンを作成しようとします。
  • その質問には、結果を得るための特別な制約はありません。これは、画像が元の状態であり、コンテンツの変更やリスクがないことを要求します。これにより、あらゆるタイプの「準備」が妨げられます。
  • その質問は、ドライブ全体とLinuxファイルシステムに関するものです。これは、パーティションとNTFSのセクションに関するものです。
2
fixer1234

私はそれが XY問題 であると言うかもしれません、そして本当の質問は: ハードディスクから使用中のスペースだけを複製する方法 (またはパーティション)?提案されたアイデアよりも優れている理由を説明せずに、別の答えを指摘したくありません。だからここにあります:

一般に、最適化した後でも、ファイルシステムの最後に空き領域が集約されることは保証されていません。 NTFSもFATファミリも十分にわかりませんが、空であっても、大規模なファイルシステムの遠いセクターを占めるデータ構造があるのではないかと思います。

したがって、部分的な画像のみを保存するという考えには懐疑的です。多分これを乗り切るファイルシステムがあるかもしれません、多分NTFSはそれらの1つです-私は知りません。

多くの場合、私はあなたが達成したいことと同様のことを、主にNTFSで行いました。私のやり方は、ファイルシステムのどこに空きチャンクがあるかに関係なく機能します。基本的に:

  • スペースがなくなるまでファイルにゼロを書き込みます。
  • 同期、
  • ゼロのファイルを削除し、
  • umount
  • スパースファイルまたは圧縮ファイルに画像を取得します。

時間がかかる場合があります。事前にファイルシステムが正常であることを確認してください。また、ディスクに障害があると思われる場合は、これを行わないでください。

詳細については、 すでに述べた質問に対する私の回答 を参照してください。重要な違いは、ドライブ全体ではなく、ddを使用して単一のパーティションを読み取ることです。

残念ながら、そのようなイメージは縮小されたパーティションに復元できません。この画像は、縮小プロセスが失敗して元のファイルが失われた場合に役立ちます。より小さなパーティションに復元できるようにするには、ファイル(およびファイルシステム内のメタデータ)をバックアップできるツールが必要だと思います。まあ、ddはそのようなツールではありません。

1