2013-11-20 36 views
-1

我有目標驅動器,我知道它是分區在512b扇區。我想讓我們說150b文件與dd這個驅動器在給定的目的地,讓我們說開始扇區2099200,然後從相同的位置扇區讀取完全相同數量的字節作爲文件大小(150b)。我想是這樣的:使用Linux dd在指定的位置複製和讀取文件

須藤DD如果= My.txt文件=的/ dev/sdb的實測值= 512 =求2099199

須藤DD如果=的/ dev /深發展= My.txt文件OBS = 150計數= 1個IBS = 512跳過= 2099199部

它幾乎作品,但我不能使其僅傳送150B:在 3 + 1記錄了 512字節

1 + 0記錄( 512 B)複製

什麼是錯,如何做我需要的?可能是我弄錯了,其他解決方案會更好,但我需要獨立於文件系統。

+1

嘗試SuperUser.com – KevinDTimm

+0

這可能是由於512B的塊大小。 –

回答

2

man頁:

count=BLOCKS 
    copy only BLOCKS input blocks 

當您從驅動器複製文件回來,你是因爲你指定的輸入512個字節的塊被複制與ibs選項和複製拷貝512個字節與count選項一個整塊。相反,你可以只指定要複製爲您ibs值的塊數:

sudo dd if=/dev/sdb of=my.txt ibs=150 count=1 skip=2099199 

編輯:正如在評論中指出,這種方法需要重新計算跳過值。替代方案是這樣的:

sudo dd if=/dev/sdb ibs=512 count=1 skip=2099199 | dd count=150 of=my.txt 
+0

除了使用不同的'ibs'外,還需要重新計算skip數量,並且不能保證他想要的特定輸入塊對齊... – twalberg

+0

正確!我不能相信我忽略了這一點... –

+0

它的工作,但是像這樣:sudo dd if =/dev/sdb ibs = 512 count = 1 skip = 2099199 | dd ibs = 150 count = 1 of = my.txt – Nikolay

相關問題