linux dd文件移动,[转载]Linux 命令之dd:转换和复制文件

dd命令可用于各种用途。

数据转换 [编辑]

dd可以在文件、设备、分区和卷之间复制数据。数据可以从其中任何地方输入或输出;但输出到分区时有重要差异。此外在传输过程中,数据可以用conv选项修改以适应介质。

如果最后一个块有意外长度,试图使用dd却可能成功。源和目标磁盘应该具有相同的大小。

不同情况的dd格式

dd if=/dev/sr0

of=myCD.iso bs=2048 conv=noerror,sync

从CD-ROM中创建ISO磁盘镜像。

dd if=/dev/sda2

of=/dev/sdb2 bs=4096 conv=noerror

克隆一个分区到另一个。

dd if=/dev/ad0

of=/dev/ad1 bs=1M conv=noerror

克隆硬盘“ad0”到“ad1”。

noerror选项意味着如果发生错误,程序也将继续运行。sync选项表示填充每个块到指定字节。

备份和恢复主引导记录 [编辑]

可以修复主引导记录。主引导记录可以转移到文件,或从中转移出来。

要复制软盘的前两个扇区:

dd if=/dev/fd0 of=MBRboot.img bs=512 count=2

要创建整个主引导记录的镜像(包括分区表):

dd if=/dev/sda of=MBR.img bs=512 count=1

要创建仅含主引导记录引导代码的镜像(不包括分区表):

dd if=/dev/sda of=MBR_boot.img bs=446 count=1

数据修改 [编辑]

dd可以原地修改数据。

用空字节覆盖文件的前512个字节:

dd if=/dev/zero of=path/to/file bs=512 count=1 conv=notrunc

转换选项notrunc意味着不缩减输出文件,也就是说,如果输出文件已经存在,只改变指定的字节,然后退出,并保留输出文件的剩余部分。没有这个选项,dd将创建一个512字节长的文件。

在不同的分区中复制磁盘分区到磁盘映像文件中:

dd if=/dev/sdb2 of=partition.image bs=4096 conv=noerror

磁盘擦除 [编辑]

出于安全方面的考虑,有时需要擦除丢弃的磁盘。

检查驱动器上是否有数据,并将其输出到标准输出:

dd if=/dev/sda

用零擦除磁盘:

dd if=/dev/zero of=/dev/sda bs=4k conv=notrunc

bs=4k选项使dd一次读取或写入4千字节。在较现代的系统中,这可以使整个进程大大加快。注意用随机数据填充磁盘总是比用零慢的多,因为随机数据必须先由CPU生成。在大多数较现代的磁盘中,用零擦除会使其中的数据永久丢失。

用零擦除磁盘会使它的数据无法被软件恢复。需要注意的是,由于数据剩磁,数据仍然可能通过特殊的实验室技术恢复。

shred程序可作为执行相同任务的高级工具。

数据恢复 [编辑]

1984年,GNU dd开启了开源软件(OSS)恢复数据、文件、驱动器和分区的历史。dd进程一次处理一个块,它的算法只是在用户界面显示运行状态。1999年10月,一个C语言的程序dd_rescue的数据恢复算法、2003年的shell脚本ddrescue有最先进的块大小变换算法。ddrescue和dd_rescue尽管名字相近,但却是不同的程序。然而,Linux发行版Debian却将dd_rescue包装为“ddrescue”,将GNU

ddrescue包装为“gddrescue”)。

GNU ddrescue既稳定又安全。ddrescue31个选项中的3个:

ddrescue -n /dev/old_disk /dev/new_disk # 快速扫描无错误区域,然后停止

ddrescue -d -r1 /dev/old_disk /dev/new_disk # 工作时直接访问磁盘的错误区域

另一个开源程序savehd7使用更复杂的算法,但它需要安装自己的语言解释器。

驱动器性能基准测试 [编辑]

对驱动器进行基准测试,使用1024字节块分析连续读取和写入的性能:

dd if=/dev/zero bs=1024 count=1000000 of=file_1GB

dd if=file_1GB of=/dev/null bs=64k

用随机数据生成文件 [编辑]

用100个随机字节生成文件:

dd if=/dev/random of=myrandom bs=100 count=1

将文件转换为大写 [编辑]

将文件转换为大写:

dd if=filename of=filename1 conv=ucase

创建任意大小的空文件 [编辑]

创建1GiB的稀疏文件,或增加现有文件的大小:

dd if=/dev/zero of=mytestfile.out bs=1 count=0 seek=1G

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值