Linux命令_dd & 测试磁盘读写、构造大文件

描述

dd命令用于复制文件,并根据操作数进行转换和格式化,且可以测试磁盘读写。

目录

1. 语法

1.1. 常用参数

2. 常见用法

2.1. 拷贝文件/磁盘

2.2. 测试磁盘

2.3. 构造大文件


1. 语法

dd  [选项]
dd  [读入文件]  [输出文件]  [指定大小]  [输出次数]

 

1.1. 常用参数

bs   :每次同时读写 bytes 字节数        # 设置此值将覆盖 ibs 和 obs
ibs  :每次读取 bytes 字节数(默认:512)
obs  :每次写入 bytes 字节数(默认:512)
     # 默认单位 bytes,后缀表示基数*bytes:c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M GB=1000*1000*1000, G=1024*1024*1024
if   :从文件中读,而不是标准输入
of   :写到文件中,而不是标准输出
count:只拷贝输入文件的前 blocks 块,每块的大小为 ibs-byte 字节
skip :在输入开始时跳过 bytes ibs 大小的块
seek :在输出开始时跳过 bytes 对象大小的块
cbs  :每次转换BYTES字节
conv :将文件按指定参数的方式转换(根据逗号分隔符号列表转换文件)
    ascii  :将EBCDIC转换成ascii。 
    ebcdic :将ascii转换成ebcdic。 
    ibm    :将ascii转换成alternative ebcdic。 
    block  :每一行输入,无论长短,输出都是 cbs 字节,并且其中的lq换行rq(NEWLINE,即c中的')用 空格替换。如有必要,行尾会填充空格。 
    unblock:用lq换行rq替换每个输入块( cbs 字节大小)末尾的空格。 
    lcase  :将大写字母转换成小写。 
    ucase  :将小写字母转换成大写。 
    swab   :交换每对输入字节。如果读入的字节数是奇数,最后 一个字节只是简单的复制到输出(因为没有能跟它交换的 字节了)(POSIX 1003.26,PASC翻译1003.2 3号和4号)。 
    noerror:发生读错误时,继续进行。 
    notrunc:不截断输出文件。 
    sync   :用0填充到每个输入块的末尾,使其大小为 ibs 字节。 

 

 

 

2. 常见用法

2.1. 拷贝文件/磁盘

快速复制文件    # 将 file1 复制为 file2(如果file2存在,那么直接覆盖)
dd if=file1 of=file2
    # if 表示读取文件
    # of 表示写入文件
将磁盘 sda1 拷贝到 sda3
dd if=/dev/sda1 of=/dev/sda3    # 磁盘只能拷到磁盘
快速打包磁盘(sda1)
dd if=/dev/sda1 |gzip > sda1.gz   
将 gz 包还原到磁盘 sda1
gzip -dc sda1.gz | dd of=/dev/sda1 
指定拷贝数据大小(2048KB)
dd if=file1 of=file2 count=2 bs=1024K
    # if 表示读取
    # of 表示写入
    # count 表示块次数
    # bs 表示块大小
        --默认单位 bytes,后缀表示基数*bytes:c=1, w=2, b=512, kB=1000, K=1024, MB=1000*1000, M=1024*1024, xM=M GB=1000*1000*1000, G=1024*1024*1024

 

 

2.2. 测试磁盘

测试磁盘读,不走内存(块大小为8k,拷贝1048576块,共8GB)
dd iflag=direct,nonblock if=/dev/sda1 of=/dev/null bs=8K count=1048576

测试磁盘写,不走内存(块大小为8k,拷贝1048576块,共8GB)
dd oflag=direct,nonblock if=/dev/sda1 of=./test_w bs=8K count=1048576

测试磁盘同时读写,不走内存(块大小为8k,拷贝1048576块,共8GB)
dd iflag=direct,nonblock oflag=direct,nonblock if=/dev/sda1 of=./test_rw bs=8K count=1048576

    # direct  :直接使用直接I/O数据
    # nonblock:使用非阻塞I/O
    # if      :读出
    # of      :写入
    # bs      :块大小
    # count   :块次数
测试磁盘最佳块大小(注意:测试前后清理缓存 echo 3 > /proc/sys/vm/drop_caches)
dd if=/dev/zero bs=1024 count=4000000 of=./4Gb.file
dd if=/dev/zero bs=2048 count=2000000 of=./4Gb.file
dd if=/dev/zero bs=4096 count=1000000 of=./4Gb.file
dd if=/dev/zero bs=8192 count=500000  of=./4Gb.file
dd if=/dev/zero bs=16K  count=250000  of=./4Gb.file
修复磁盘
dd if=/dev/sda1 of=/dev/sda1

销毁磁盘sda1
dd if=/dev/urandom of=/dev/sda1

 

 

2.3. 构造大文件

利用 /dev/zero 伪文件生成 1GB 数据文件
dd if=/dev/zero of=file_1GB bs=1G count=1

若是想要生成100GB数据,那么:

dd if=/dev/zero of=file_1GB bs=1G count=100

注意:如果dd读入的值为磁盘,那么输出为二进制文件;如果读入的是普通文本,那么输出也就会是文件格式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值