web-dev-qa-db-ja.com

USBスティックの少し同一の画像を作成するにはどうすればよいですか?

何らかの理由で読めないUSBスティックがあります。後日、イメージからデータを取得できるように、保存目的でイメージのイメージを作成します。

USBスティックのこのような少し同じイメージを作成するにはどうすればよいですか?


これは、ddを使用したときに表示されるエラーです。

oshirowanen@desktop:~$ Sudo dd if=/dev/sdd of=/USB_image
[Sudo] password for oshirowanen: 
dd: reading `/dev/sdd': Input/output error
0+0 records in
0+0 records out
0 bytes (0 B) copied, 1.00783 s, 0.0 kB/s
oshirowanen@desktop:~$ 
19
oshirowanen

dd it!

使用法はSudo dd if=/dev/sdb of=~/USB_imageのようなものになります。ここで/ dev/sdbSudo fdisk -lでリストされているUSBドライブで、〜/ USB_imageはイメージファイルですコピーが作成されます(イメージファイルが作成されるパス)。

イメージを別のUSBドライブに復元するには、プロセスを反転するだけです:Sudo dd if=~/USB_image of=/dev/sdbは、デバイスに〜/ USB_imageを復元しますsdb。新しいUSBドライブが元のUSBドライブと同じかそれ以上であることを確認してください。

また、作成したばかりのイメージファイルをパスにマウントすることもできます。最初にmount ~/USB_image /mnt/USB_image -o loopを使用して別のUSBドライブに復元する必要はありません。

39
Bruno Pereira

ddrescueを使用します。エラーの後も継続し、ddは単純に失敗します。

さらに、ddrescueがリポジトリにあります。 13.04に、Sudo apt-get install gddrescueと入力してインストールしました。

Sudo fdisk -lまたはdmesgを使用して、デバイスの場所を特定します(例:/dev/sdb)、次のようなコマンドを実行します

ddrescue /dev/sdb /home/user/desktop/bkp.img

ddrescueには多くのオプションがあり、manページを読むことをお勧めします。また、ハードウェアに障害が発生し、ddをダンプしている理由もわかりません。 1つの不良ブロックによりddが終了する可能性がありますが、断続的な電源障害が発生する可能性があります。 dmesgは、発生している可能性のあるハードウェア障害の詳細を示す場合があります。

デバイスがマウントされていないことを確認してください!データリカバリ、イメージングなどを実行しようとすると、問題が発生する可能性があります。

データの回復でうまくいかないことがたくさんあります。問題がある場合はポストバックしてください。 testdiskは、イメージを取得したらデータ回復を行うための素晴らしいユーティリティです。

わかりやすくするために、これはUSBハードドライブまたはUSB(ソリッドステートメモリ)デバイスですか?

I/Oエラーは通常、ファイルシステムの破損ではなく、ハードウェアの誤動作を示しています。

また、デバイスのSMARTデータ分析がある場合は、取得してみてください。これは、デバイスが過熱状態で、長時間電源が入っていて、不良セクターがあり、Xを超える回数にさらされている場合などを示します。 Gsなどの.

6
j0h

「これはddを使用するときに表示されるエラーです」という質問の後半に関しては、いくつかの可能性があります。

  1. 入力したコマンドと受け入れられた回答の違いに注意してください。 ~の前に/USB_imageがありません。つまり、ホームディレクトリではなくファイルシステムのルートを出力しようとしています。
  2. /dev/sddは正しいドライブではない可能性があります。 Sudo fdisk -lを実行し、ドライブのサイズをUSBスティックの既知のサイズと比較します。たとえば、16GBに近いDisk /dev/sdf: 15.8 GB, 15805186048 bytesであるため、これが私のUSBスティックであることがわかります。
2
MDMower

ddは、前のポスターで述べたように、ネイティブな方法です。ただし、エラーが発生しても続行する必要があるため、次のように開始します。

dd if=<usb device> of=<new file on disk with enough space> bs=<should match your blocksize> conv=noerror,sync 

重要な部分は最後の部分です:conv=syncは、部分的にしか読み取れないすべてのブロックをゼロで埋めるようにddに指示するため、結果のイメージにはいくつかのゼロが多すぎる場合がありますが、構造的にはフレークディスクからマイナス読み取りエラー。 conv=noerrorはこれらの読み取りエラーを処理し、ddに次のブロックを続行するよう指示しました。この時点で、ブロックサイズが重要になります。エラーをスキップするのに必要なサイズよりも大きい場合、読み取り可能なデータはここで失われます。ブロックサイズは常に2倍にする必要があります-疑わしい場合は、512kがうまくいくはずです。

その後、私はお勧めします:

  • その画像の変更されていないコピーを安全な場所に保存します
  • fsckディスクイメージのコピー
  • ディスクイメージをマウントする
  • ファイルを確認してください-今は問題なく読むことができますが、一部が欠落しているか、切り捨てられている可能性があります
  • デバイス自体をまったく読み取れない場合は、運が悪い可能性があります。また、デバイスにプロプライエタリなソフトウェアが含まれている場合、最初のブロックでアクセスされたときに読み取りエラーを返すように設定されている場合があります。

(2010年に書かれた記事から自分自身を部分的に引用)

ネイティブを維持する必要がない場合は、ddrescue(パッケージgddrescue)やそのコンパニオンddrescueviewsourceforge )エラーを視覚化します。

2
Tatjana Heuser

ddを使用して、USBスティック(または別のデバイス)のイメージを作成できます。

例えば。

dd if=<usb device> of=usb.img

パラメーターをddに追加して、コマンドを最適化できます(例:bs)。

2
Uwe Plonus