linux dd 磁带设备,linux下dd命令的应用【摘录】

Linux下的dd命令是一个强大的工具,用于物理复制文件或设备,常用于硬盘克隆、分区备份等。通过dd,可以实现二进制级别的完全复制,包括硬盘的所有分区和数据。例如,可以将一张软盘的内容复制到另一张软盘,或者创建硬盘的镜像文件。dd命令的选项包括指定输入输出文件、设置块大小、转换格式等,还可以在复制过程中进行错误处理和数据同步。在使用dd时,需要注意它会直接操作硬件,因此需谨慎操作,避免数据丢失。
摘要由CSDN通过智能技术生成

linux下dd命令的应用【摘录】

Submitted by Unix[永恒系统]

linux下dd命令的应用【摘录】

2010年03月19日

使用Linux dd命令作硬盘克隆(转)

源盘:IBM 20G

5400RPM FAT16分区1;Linux native分区1;FreeBSD分区1,内又分为一个主Sillice和一个Swap

Sillice;扩展分区1,4个逻辑分区,其中最后一个是Linux Swap分区。IDE1 Master

目标盘:西部数据30G 7200RPM,空白盘。IDE2 Master

进入Linux,运行: dd if=/dev/hda of=/dev/hdc

dd

就是Linux/Unix下通用的克隆、镜像程序,if=输入的文件

of=输出的文件。由于在Linux下所有的硬件都表示为文件,所以可以进行任何复制、克隆。比如还可以把/dev/hda克隆到MO、磁带以及映像文件

中,当然,目标"文件"必须比原"文件"大,不然就会溢出。

20G的硬盘复制了大约不到2个

小时,在整个过程中,使用K6-2

500CPU,UDMA2打开的情况下,CPU占用率只有18%-19%,从来没有超过20%。在此期间还可以玩玩扫雷、国际象棋等游戏,也可以看看文

档、帮助什么的,但是最好不要作写操作。当然你可以估计时间,在复制进程还没有到Linux分区,或者已经过了Linux分区的时候,也可以进行写操作,

但是要当心!

最后,dd会报告一共复制了多少字节,这就是源盘的实际大小。完成以后,30G

的西部数据硬盘就跟原来的IBM硬盘"一模一样"了,只不过是后面有10G的空空间,你可以在份一个分区(我的硬盘不能在分主分区了,因为4个

Primray分区已满,只能在芬逻辑分区),或者用PQ、Fips扩大原有的分区。如果你什么都不做,那么从新启动Win98以后,跟原来是一模一样

的。如果启动Linux,就有了一些问题,因为对于新硬盘来说,相当于运行完了dd程序就切断了电源,因此文件系统处于un

clean状态,在启动的时候会报错,不要怕,输入root密码,然后运行:fsck /

这就启动了文件系统检测程序,相当于Windows下的磁盘检测,对于所有的问题都回答"y",大部分都是/tmp的问题,无关紧要的。修复完毕,输

入:reboot就可以安全的启动Linux了!

总的来说,Linux下的dd相对于

Ghost各有所长。dd的复制是完全基于二进制的物理复制,从硬盘的第一个字节道最后一个字节,完全一样的克隆了一边,所以是最保险、最准确的。而且由

于dd是物理复制,所以只要是硬盘上存在的分区,无论Linux是否认识,甚至是Linux认不出是什么的一段数据,都可以原原本本的复制,例如

FreeBSD分区、其他操作系统的分区,甚至加密扇区什么的,就连逻辑坏块也原样复制!因此除非出现物理问题,不然dd是绝对不会出错的!而Ghost

则比较"高级"一些,可以在复制的时候改变分区大小(他认识的分区格式),压缩映像文件(dd本身不具有压缩功能,但是可以用gzip、bzip2等工具

压缩生成的文件),在Windows下还有explore软件可以单独提取文件出来,还有网络功能,而且速度也要比dd快一些(好像Ghost使用了较大

的缓存)。另外一点dd的优势在于,在克隆的同时还可以干些别的事情,不像Ghost那样只能干等。因此从这方面来看,dd的速度又要比Ghost快,因

为它完全占用系统的时间是零!

其它Unix下的dd操作跟Linux下的雷同,只不过是/dev/hda的称谓变化一下。我

在FreeBSD4.2下试验过,效果跟Linux下完全相同,时间稍微长一点点,但是在FreeBSD下,dd的CPU占用率有时会达到30%以上。

如果你的源盘是IDE,而目标盘是SCSI的,这时要注意了,虽然对于硬件来说是没有什么问题,因为现在的Linux还是FreeBSD都支持即插即用;但是,/etc/fstab文件需要修改,在dd之前要把所有的hda改成sda,然后再改回来^_^

linux下dd命令详解

名称: dd

使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file

使用方式:

dd [option]

如果你想要在线看 manual, 可以试试:

dd --help

或是

info dd

如果你想要看看这个版本如何:

dd --version

输入或输出

dd if=[STDIN] of=[STDOUT]

强迫输入或输出的Size为多少Bytes

bs: dd -ibs=[BYTE] -obs=[SIZE]

强迫一次只做多少个 Bytes

cbs=BYTES

跳过一段以后才输出

seek=BLOCKS

跳过一段以后才输入

skip=BLOCKS

当然你可以拿这个来方便的拷贝光碟(注意,你的光碟是标准的 iso9660格式才可以这么做唷!)

dd if=/dev/cdrom of=cdrom.iso

其中 if 后面以及 of 后面的内容依你的需求调整。

然后给系统这个指令就可以烧了:

cdrecord -v cdrom.iso

这篇不是在讲 cdrecord 的,所以上面的指令是最为简单但是不一定能符合您的硬件环境...

功能:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd

命令把软盘上的数据写成硬盘的一个寄存文件,再把这个寄存文件写入第二张软盘上,完成diskcopy的功能。需要注意的是,应该将硬盘上的寄存文件用

rm命令删除掉。系统默认使用标准输入文件和标准输出文件。

语法:dd [选项]

if =输入文件(或设备名称)。

of =输出文件(或设备名称)。

ibs = bytes 一次读取bytes字节,即读入缓冲区的字节数。

skip = blocks 跳过读入缓冲区开头的ibs*blocks块。

obs = bytes 一次写入bytes字节,即写入缓冲区的字节数。

bs = bytes 同时设置读/写缓冲区的字节数(等于设置ibs和obs)。

cbs = byte 一次转换bytes字节。

count=blocks 只拷贝输入的blocks块。

conv = ASCII 把EBCDIC码转换为ASCIl码。

conv = ebcdic 把ASCIl码转换为EBCDIC码。

conv = ibm 把ASCIl码转换为alternate EBCDIC码。

conv = block 把变动位转换成固定字符。

conv = ublock 把固定位转换成变动位。

conv = ucase 把字母由小写转换为大写。

conv = lcase 把字母由大写转换为小写。

conv = notrunc 不截短输出文件。

conv = swab 交换每一对输入字节。

conv = noerror 出错时不停止处理。

conv = sync 把每个输入记录的大小都调到ibs的大小(用NUL填充)。

例1:要把一张软盘的内容拷贝到另一张软盘上,利用/tmp作为临时存储区。把源盘插入驱动器中,输入下述命令:

$ dd if =/dev/fd0 of = /tmp/tmpfile

拷贝完成后,将源盘从驱动器中取出,把目标盘插入,输入命令:

$ dd if = /tmp/tmpfile of =/dev/fd0

软盘拷贝完成后,应该将临时文件删除:

$ rm /tmp/tmpfile

例2:把net.i这个文件写入软盘中,并设定读/写缓冲区的数目。

(注意:软盘中的内容会被完全覆盖掉)

$ dd if = net.i of = /dev/fd0 bs = 16384

例3:将文件sfile拷贝到文件 dfile中。

$ dd if=sfile of=dfile

dd 是 Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。

dd 的主要选项:

指定数字的地方若以下列字符结尾乘以相应的数字:

b=512, c=1, k=1024, w=2, xm=number m

if=file

输入文件名,缺省为标准输入。

of=file

输出文件名,缺省为标准输出。

ibs=bytes

一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。

obs=bytes

一次写 bytes 个字节(即一个块大小为 bytes 个字节)。

bs=bytes

同时设置读写块的大小为 bytes ,可代替 ibs 和 obs 。

cbs=bytes

一次转换 bytes 个字节,即转换缓冲区大小。

skip=blocks

从输入文件开头跳过 blocks 个块后再开始复制。

seek=blocks

从输出文件开头跳过 blocks 个块后再开始复制。(通常只有当输出文件是磁盘或磁带时才有效)

count=blocks

仅拷贝 blocks 个块,块大小等于 ibs 指定的字节数。

conv=conversion[,conversion...]

用指定的参数转换文件。

转换参数:

ascii 转换 EBCDIC 为 ASCII。

ebcdic 转换 ASCII 为 EBCDIC。

ibm 转换 ASCII 为 alternate EBCDIC.

block 把每一行转换为长度为 cbs 的记录,不足部分用空格填充。

unblock

使每一行的长度都为 cbs ,不足部分用空格填充。

lcase 把大写字符转换为小写字符。

ucase 把小写字符转换为大写字符。

swab 交换输入的每对字节。 Unlike the

Unix dd, this works when an odd number of

bytes are read. If the input file contains

an odd number of bytes, the last byte is

simply copied (since there is nothing to

swap it with).

noerror

出错时不停止。

notrunc

不截短输出文件。

sync 把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。

由于 dd 命令允许二进制方式读写,所以特别适合在原始物理设备上进行输入/输出。例如可以用下面的命令为软盘建立镜像文件:

dd if=/dev/fd0 of=disk.img bs=1440k

有趣的是,这个镜像文件能被 HD-Copy ,Winimage 等工具软件读出。再如把第一个硬盘的前 512 个字节存为一个文件:

dd if=/dev/hda of=disk.mbr bs=512 count=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值