跳到主要内容

dcp

设备间数据拷贝,支持块设备、XFS 文件、裸内存之间的任意组合。

用法​

dcp <input@offset:size> <output@offset:size>

参数格式​

输入和输出均使用 <name>@<offset>:<size> 格式,各字段都可省略:

字段说明默认值
name块设备名或 XFS 文件路径,省略表示裸内存无(裸内存)
offset起始偏移,支持十进制和十六进制(0x 前缀)0
size拷贝字节数,支持十进制和十六进制到设备末尾

设备类型解析​

name 字段按以下顺序解析:

  1. 先按块设备名匹配(如 blk.0,也包含分区设备,如 blk.0.xstar)
  2. 匹配失败则按 XFS 文件路径 解析(需要已挂载的文件系统)
  3. name 省略时按裸内存访问,此时 offset 即内存地址

说明​

  • 实际拷贝大小取输入可用大小与输出大小的较小值
  • 输入为块设备时先执行同步读,输出为块设备或文件时拷贝完成后自动落盘
  • 输出为文件时 offset 被忽略,总是从文件头开始写入
  • 使用 64KB 缓冲分块传输,完成后显示总量和传输速度

注意事项​

  • 裸内存访问不做任何越界检查,地址和长度必须由调用者保证有效
  • 对块设备的写入是裸写:NAND 类设备(如 spinand)会按擦除块做读-改-写,请勿误写系统分区

示例​

# 导出内存到文件
dcp @0x80000000:0x1000 /tmp/dump.bin@0:0x1000

# 备份块设备分区到文件
dcp blk.0.xstar@0:0x10000 /tmp/backup.bin@0:0x10000

# 从文件烧写镜像到块设备
dcp /tmp/image.bin@0:0x100000 blk.0@0x10000:0x100000

# 回读块设备内容到内存,配合 md 命令检查
dcp blk.0@0x10000:0x100 @0x40300000:0x100

# 分区之间的拷贝
dcp blk.0.private@0:0x10000 blk.1@0:0x10000

# 省略 size,从指定偏移拷贝到设备末尾
dcp blk.0@0x1000 /tmp/full.bin