我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Shell脚本创建指定大小文件的测试数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Shell脚本创建指定大小文件的测试数据

我们在测试或调试的时候,有时候会需要生成某个size的文件,比如在测试存储系统时,需要将磁盘剩余空间减少5G,最简单的办法就是拷贝一个5G的文件过来,但是从哪儿去弄这样大小的文件呢,或许你想到随便找一个文件,不停的拷贝,最后合并,这也不失为一种办法,但是有了dd,你会更容易且更灵活的实现。
我们来case by case的介绍dd的用法。先看第一个

生成一个大小为5G的文件,内容不做要求

命令如下

$ dd if=/dev/zero of=tmp.5G bs=1G count=5

解释一下这里用到的参数
if=FILE      : 指定输入文件,若不指定则从标注输入读取。这里指定为/dev/zero是Linux的一个伪文件,它可以产生连续不断的null流(二进制的0)  

of=FILE      : 指定输出文件,若不指定则输出到标准输出  

bs=BYTES     : 每次读写的字节数,可以使用单位K、M、G等等。另外输入输出可以分别用ibs、obs指定,若使用bs,则表示是ibs和obs都是用该参数  

count=BLOCKS : 读取的block数,block的大小由ibs指定(只针对输入参数)

这样上面生成5G文件的命令就很好理解了,即从/dev/null每次读取1G数据,读5次,写入tmp.5G这个文件

再看下面一个问题

将file.in的前1M追加到file.out的末尾

命令如下

$ file_out_size=`du -b file.out | awk '{print $1}'`  

$ dd if=./file.in ibs=1M count=1 of=./file.out seek=1 obs=$file_out_size

这里ibs和obs设置为了不同的值,和前面的命令相比,只多了一个seek参数
seek=BLOCKS : 在拷贝数据之前,从输出文件开头跳过BLOCKS个block,block的大小由obs指定

命令的意思就是从file.in读取1个1M的数据块写入file.out,不过写入位置并不在file.out的开头,而是在1*$file_out_size字节偏移处(也就是文件末尾)

在此基础上再增加一个要求

将file.in的第3M追加到file.out的末尾

$ file_out_size=`du -b file.out | awk '{print $1}'`  

$ dd if=./file.in skip=2 ibs=1M count=1 of=./file.out seek=1 obs=$file_out_size

这里多了一个参数skip

skip=BLOCKS : 拷贝数据前,从输入文件跳过BLOCKS个block,block的大小由ibs指定。这个参数和seek是对应的

上面命令的意思就是,从文件file.in开始跳过2*1M,拷贝1*1M数据,写入文件file.out的1*$file_out_size偏移处

这样基本的参数都介绍全了,无非就是设置输入输出文件以及各自的偏移,设置读写数据块大小和读取数据块个数,下面总结一下

输入参数:  

    if  

    skip  

    ibs  

    count  

输出参数:  

    of  

    seek  

    obs

最后来一道终极题。前面创建的都是null流,这次换一个

指定某个字符,创建一个全是这个字符的指定大小的文件。比如创建一个文件,大小为123456字节,每个字节都是字符A

这问题看似没什么意义,但有时候确实需要用到。比如我通过/dev/null创建了一个1G的文件,但是出于测试需求我想修改中间100M数据,这时我需要创建一个100M的文件,将该文件写入到那个1G文件的指定位置,而这个100M的文件是不能从/dev/null创建的,否则达不到修改的目的,这时候就需要这样的功能了

话不多说,直接上脚本,有了前面的基础,相信都能看得懂

#!/bin/bash  

if [ $# -ne 3 ];then  

    echo "usage : $0 character out_file file_size(Byte)"  

    exit 1  

fi  

  

echo "$1" | grep -q "^[a-zA-Z]$"  

if [ $? -ne 0 ];then  

    echo "arg1 must be character"  

    exit 1  

fi  

  

character=$1  

out_file=$2  

target_size=$3  

  

# echo输出默认是带'n'字符的,所以需要通过dd指定输入字节数  

echo "$character" | dd of=$out_file ibs=1 count=1  

while true  

do  

    cur_size=`du -b $out_file | awk '{print $1}'`  

    if [ $cur_size -ge $target_size ];then  

        break  

    fi  

    remain_size=$((target_size-$cur_size))  

    if [ $remain_size -ge $cur_size ];then  

        input_size=$cur_size  

    else  

        input_size=$remain_size  

    fi  

    dd if=$out_file ibs=$input_size count=1 of=$out_file seek=1 obs=$cur_size || exit 1  

done

有了这些技巧,在对文件内容无要求的前提下,你就可以任意创建指定大小的文件,任意修改文件指定字节数,这会让某些测试场合变得非常方便

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Shell脚本创建指定大小文件的测试数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Shell脚本创建指定大小文件的测试数据

我们在测试或调试的时候,有时候会需要生成某个size的文件,比如在测试存储系统时,需要将磁盘剩余空间减少5G,最简单的办法就是拷贝一个5G的文件过来,但是从哪儿去弄这样大小的文件呢,或许你想到随便找一个文件,不停的拷贝,最后合并,这也不失为
2022-06-04

Shell脚本中怎么创建指定大小的文件

Shell脚本中怎么创建指定大小的文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。代码如下:$ dd if=/dev/zero of=tmp.5G bs=1G count=5
2023-06-09

Shell脚本自动删除指定大小以上的备份文件

最近本地虚拟机的空间老是被备份给占满,为了偷懒不想自己天天登录上去清除,才写了这个自动清理脚本. 系统:centos 5.x 脚本内容: cat make_room.sh#!/bin/bash#size=`df -hP|grep /dev/
2022-06-04

shell脚本实现统计文件大小、批量创建用户的示例

统计文件大小需求:每小时执行一次脚本,当时间为0点或12点时,清空/data/logs目录下所有日志文件的内容(包括该目录下的子目录里的文件),其他时间只需统计每个文件UDafukeeGr的大小,一个文件一行,记录到以日期和时间命名
2022-06-04

怎么用Shell脚本自动删除指定大小以上的备份文件

这篇文章主要介绍“怎么用Shell脚本自动删除指定大小以上的备份文件”,在日常操作中,相信很多人在怎么用Shell脚本自动删除指定大小以上的备份文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用Shel
2023-06-09

linux下保留文件系统下剩余指定数目文件的shell脚本

本节内容:保留文件系统下剩余指定数目的文件 例子:#!/bin/bash #------------------------------- #Description: Back up your files#site: www.lsjlt.c
2022-06-04

linux中如何保留文件系统下剩余指定数目文件的shell脚本

这篇文章主要介绍了linux中如何保留文件系统下剩余指定数目文件的shell脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。例子:代码如下:#!/bin/bash #---
2023-06-09

编程热搜

目录