一.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是将第一块硬盘的数据复制到第二块硬盘上,
系统写硬盘不是顺序写的,第二块硬盘相同的扇区上数据和第二块硬盘可能是不一样的