首页 文章

使用Linux dd在指定位置复制和读取文件

提问于
浏览
-1

我有目的地驱动器,我知道在512b扇区划分 . 我想将带有 dd 的150b文件转移到给定目的地的此驱动器,假设开始扇区2099200,然后从同一位置扇区读取与文件大小(150b)完全相同的字节数 . 我试过这样的事情:

sudo dd if=my.txt of=/dev/sdb obs=512 seek=2099199

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

它几乎可以工作,但我不能只转移150b:

复制了512个字节(512 B)的3个记录中的1个记录

有什么不对,怎么做我需要的?可能是我弄错了,其他一些解决方案会更好,但我需要独立于文件系统 .

1 回答

  • 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
    

相关问题