linux - 使用Linux dd复制并读取指定位置的文件

标签 linux dd

我有目标驱动器,我知道它被分区为 512b 扇区。我想将带有 dd 的 150b 文件传输到给定目标的该驱动器(假设起始扇区 2099200),然后从同一位置扇区读取与文件大小 (150b) 完全相同的字节数。我尝试过这样的事情:

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

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

它几乎可以工作,但我无法让它仅传输 150b:

1+0 条记录 3+1记录输出 复制了 512 字节 (512 B)

出了什么问题以及如何做我需要的事情?也许我弄错了,其他解决方案会更好,但我需要独立于文件系统。

最佳答案

man 页面:

count=BLOCKS
   copy only BLOCKS input blocks

当您从驱动器复制文件时,您将复制 512 字节,因为您使用 ibs 选项指定要在 512 字节 block 中复制的输入,并使用 count 选项复制一整个 block 。相反,您可以只指定要复制的 block 数作为您的 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

关于linux - 使用Linux dd复制并读取指定位置的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20101553/

相关文章:

linux - dd if=/dev/sdb 命令是做什么的?

php - 通过 PHP 设置的 crontab 定期备份 MySQL 数据库不起作用

大约 30 分钟后 PHP session 变量为空

android - 如何使用 dd 将图像写入我的 android 手机 SD 卡?

backup - 无法使用 dd 备份 SD 卡,提示 "Input/Output Error"

shell - 有没有一种快速的方法来读取 dd 中的备用字节

c - C 语言的低级编写

linux - 在 Linux 上构建 FBX SDK

php - 访问网站根PHP之外的文件夹

c++ - 安装后段错误