SD カードのファイルシステムのみをイメージファイルにバックアップする

SD カードのファイルシステムのみをイメージファイルにバックアップする

編集: 何らかの理由で、投稿の一部しか保存されませんでした。現在は全内容に更新しました。


このトピックはRaspberry Piに関するものですが、基本的に以下の設定を持つすべてのSDカードに当てはまります。ファイルシステムはカード全体のサイズの一部しか占めません。要するに、この質問のポイントは、どのように書き込むかを把握することです。のみFS (複数のパーティションがある場合はそれ以上) をバックアップ イメージにコピーします。詳細については、以下を参照してください。

昨年 12 月に購入して Pi で遊び始めたとき、SD カードが破損して内容が失われました。通常のシャットダウンではなく、不適切に電源を切ったためだったので、大した問題ではありません。毎回カードをフォーマットし、Raspbian イメージを書き込み、Pi に挿入し、ボードを起動し、ファイルシステムを拡張し、すべてを再インストールして再設定する必要があったため、より良い解決策を探し始めました。

  • 画像とその上のFSのサイズを変更する前にSDカードに書き込む -これリンクは、イメージを(入力ソースとしてddとを使用して)拡大し、 (Raspbianの場合はEXT4だと思います(ブートコンポーネント用のFAT32の小さなパーティションを除く))を調整する方法を完璧に示しています。これにより、/dev/zeroext4ファイルシステムを拡張するRaspberryの設定ツールの機能で、基本的に2GB、4GB、16GB、32GBなどのフォーマットされていない残りのスペースを消費します。もちろん、イメージを増やすとddSDカードへの書き込みに必要な時間も長くなりますが、カスタマイズの次のステップも可能になります。
  • インストールされたソフトウェアをカスタマイズする -chrootまたはproot(プラスqemu)を使用して(ここそしてここ) を使用して、Raspbian の FS を適切にマウントし、chrootその中にある場合は、必要なものをインストール/ビルドできます。これは、クロスコンパイルを必要とする多くのビルド (Pi 用の Qt など) にとって重要なステップでもあります。Pi でネイティブにコンパイルすることもできますが、多くのスペースと時間がかかります。

これが基本的に私が画像をカスタマイズするために行ってきた方法です。ここでの問題は、逆の操作、つまり SD カードの内容を取り出して最適な方法で PC に保存する一連の手順です。圧縮はもちろん、実行できる重要なことの 1 つですが、それだけでは十分ではありません。使用時には、ddSD カード全体 (空のブロックを含む) をコンピューターに書き込むか、必要なサイズとセクター数を選択できます。2 番目の方法はストレージをより有効に活用できますが、慎重に計算する必要があります。手抜きすると、FS が壊れてしまう可能性があります (ああ、これは何度も見たことがあります...)。

私は次のような解決策を探していますクローンジラオファー - クローンできます実際にコンテンツがあるブロックのみそして残りを捨てるFSの縮小そして、完全に機能する FS をはるかに小さなスペースに保存できるようになりました。昨年、隣人が壊れた HDD からデータを MacBook に保存するのを手伝ったときに、これを実行しました。

例: Raspbian Jessie Lite をインストールした場合、SD カードで使用されるのは約 1.3 GB だけです。では、カードが 32 GB だと想像してください。もちろん、そのうちにフォーマットして残りのスペースを使用したくなるかもしれませんが、通常はそうではありません (少なくとも私の場合は)。したがって、dd盲目的に使用する場合は、基本的に 32 GB のイメージ ファイルを作成します。圧縮によってほとんどのギガバイトが処理されますが、後で SD カードに書き戻して Raspbian の以前の状態を復元するには、非常に長いプロセスが必要になります。FS をコピーすることもできます (これも を使用)。しかし、実際のインストール (すべてのファイル) がそのパーティションで 600 MB 程度しか占有しない場合はどうでしょうか。必要なのは 600 MB だけなのに、なぜ 1.3 GB をコピーする必要があるのでしょうか。また、構成ツールの「ファイルシステムの拡張」機能が使用された Raspbian が入った SD カードがあり、 % が実際に使用されているddにもかかわらず SD カード全体がフォーマットされている場合はどうでしょうか。n

できるだけ少ない労力と手間でこれを実現する方法はありますか?

答え1

小さなFATパーティションをダンプ/復元しますdd(必要な場合は)が、e2image -ae2fsprogsメイン パーティションのパッケージ。フラッシュに復元する場合、この-cオプションは便利なようです (復元先で実際に異なる部分のみを上書きします)。

答え2

さて、あなたの質問に直接答えているわけではありませんが、簡単な修復のために私がやったことは次のとおりです

  • 必要なパッケージがすべてインストールされたら、SDカードの内容をファイルにddします。
  • ファイルを最大圧縮率でbzipし、gzipされたデータファイルをバックアップとして保存します。
  • 破損した場合は、ddを使用してbunzip後にバックアップファイルを復元します。

関連情報