Linux dd与cp区别

一.dd
1.读取方式
dd是以扇区方式读取;操作的是磁盘的扇区字节,偏向于更底层的拷贝和数据转换,主要针对数据内容的处理。
它可以从源数据拷贝n块,每次m字节,也可以拷贝到目的文件的指定偏移量处,并可以转换数据等等。

2.基本参数

  bs=BYTES        一次最多读取和写入字节
  cbs=BYTES       一次转换字节
  conv=CONVS      按照逗号分隔符号列表转换文件
  count=N         仅复制N个输入块
  ibs=BYTES       一次最多读取字节(默认值:512)
  if=FILE         从文件而不是标准数据读取
  iflag=FLAGS     按照逗号分隔的符号列表阅读
  obs=BYTES       一次写入字节(默认值:512)
  of=FILE         写入文件而不是标准输出
  oflag=FLAGS     按照逗号分隔的符号列表书写
  seek=N          在输出开始时跳过N个obs大小的块
  skip=N          在输入开始时跳过N个ibs大小的块
  status=LEVEL    打印到stderr的信息级别;
                  “无”会抑制除错误消息以外的所有信息,
				  “noxfer”会抑制最终传输统计数据,
				  “进度”显示定期传输统计信息

3.常用案例

1)备份数据

[root@localhost tmp]# dd if=/dev/sda of=/tmp/crr.dbf bs=51024 count=1000
1000+0 records in
1000+0 records out
51024000 bytes (51 MB) copied, 0.311948 s, 164 MB/s
[root@localhost tmp]# ls -l
total 49832
-rw-r--r-- 1 root root 51024000 Mar 27 20:28 crr.dbf

2)擦除磁盘/文件数据

[root@localhost tmp]# dd if=/dev/zero of=/dev/sda bs=1024 count=1000
1000+0 records in
1000+0 records out
1024000 bytes (1.0 MB) copied, 0.00115201 s, 889 MB/s


3)测试磁盘读写速率
[root@localhost tmp]# time dd if=/dev/zero of=/tmp/crr.dbf bs=1024 count=10000000
10000000+0 records in
10000000+0 records out
10240000000 bytes (10 GB) copied, 51.6327 s, 198 MB/s

real    0m51.727s
user    0m0.807s
sys     0m33.117s

二.cp
1.读取方式
以字节方式读取数据;

2.基本参数

	-a       相当于 -pdr 的意思;
	-d       若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身;
	-f       为强制 (force) 的意思,若有重复或其它疑问时,不会询问使用者,而强制复制;
	-i       若目的檔(destination)已经存在时,在覆盖时会先询问是否真的动作!
	-l       进行硬式连结 (hard link) 的连结档建立,而非复制档案本身;
	-p       连同档案的属性一起复制过去,而非使用预设属性;
	-r       递归持续复制,用于目录的复制行为;
	-s       复制成为符号连结文件 (symbolic link),亦即『快捷方式』档案;
	-u       若 destination 比 source 旧才更新 destination !

3.常用案例

1)复制单个文件

[root@localhost tmp]# mkdir ccc  
[root@localhost tmp]# touch aaa  
[root@localhost tmp]# ls ccc    
[root@localhost tmp]# cp aaa ccc/
[root@localhost tmp]# ls ccc
aaa                  

2)复制多个文件

[root@localhost tmp]# mkdir crr                
[root@localhost tmp]# touch file{1,2,3}        
[root@localhost tmp]# ls crr/                  
[root@localhost tmp]# cp file1 file2 file3 crr/
[root@localhost tmp]# ls crr/  
file1  file2  file3 

3)复制目录,-r
                
[root@localhost tmp]# mkdir crr1 crr2
[root@localhost tmp]# ls crr2        
[root@localhost tmp]# cp -r crr1 crr2
[root@localhost tmp]# ls crr2        
crr1

三.两者区别
dd是对块进行操作的,cp是对文件操作的。
例如:有两块硬盘,将第一块硬盘的数据复制到第二块硬盘上

dd if=/dev/hda of=/dev/hdc bs=1024 count=1000
bs每次复制的块大小,count复制的次数
第二块硬盘的数据布局和第一块是完全一样的(扇区数据一样)

cp -r /dev/hda /dev/hdc 
cp是将第一块硬盘的数据复制到第二块硬盘上,
系统写硬盘不是顺序写的,第二块硬盘相同的扇区上数据和第二块硬盘可能是不一样的
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SecureCode

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值