2013-11-20 31 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

相关问题