web-dev-qa-db-ja.com

ddを使用してドライブの最後から読み取る

ddを使用してドライブの最後から読み取るにはどうすればよいですか? size - to_readを使用することを考えましたが、サイズをバイト単位で取得する方法がわかりません。

3
Dani

'dd'である必要がありますか? GNU 'ddrescue'には便利な「リバース」オプションがあります:

  # copy the last 1K from '/dev/sdc' to '/tmp/c_end'
  % ddrescue  --reverse  --max-size=1Ki /dev/sdc /tmp/c_end


  Press Ctrl-C to interrupt
  rescued:      1024 B,  errsize:       0 B,  current rate:     1024 B/s
     ipos:         0 B,   errors:       0,    average rate:     1024 B/s
     opos:         0 B,     time from last successful read:       0 s
  Finished
3
AGC

ディスクの合計サイズをバイト単位で取得します。

 fdisk -l/dev/sda 
 
ディスク/ dev/sda:1000.2 GB、1000204886016バイト
 255ヘッド、63セクター/トラック、121601シリンダー
単位= 16065のシリンダー* 512 = 8225280バイト
 
デバイスブート開始エンドブロックIDシステム
/dev/sda1 * 1 7 56196 fdLinuxレイド自動検出
/dev/sda2 8 257 2008125 83 Linux 
/dev/sda3 258 121602 974698231+ fd Linux raid autodetect 

Ddを使用してディスクから最後の100バイトを取得します。

 dd if =/dev/sda of = /tmp/endofdisk.data bs = 1 skip = 1000204885916 count = 100 
 

Fdisk出力の最初の行にあるディスクの合計サイズに注意してください。私は1バイトのブロックサイズを使用しましたが、もちろん、2バイト以上をコピーする場合は、1Kまたは1Mのブロックを使用してください。サイズを手動で計算し(1024で除算)、1Kブロックの場合はbs=1bs=1024に置き換えます。

1
haimg