美文网首页
快速生成大量随机大小的文件

快速生成大量随机大小的文件

作者: lewzylu | 来源:发表于2019-06-28 16:37 被阅读0次

要生成大量随机大小的文件,最简单的方法是for循环N次。

例如,生成100W个0-16K大小的小文件(尝试时请改小一点数量,不然时间要很久):

tmp_dir=/tmp/temp

for i in {1..1000000};do
    dd if=/dev/zero of=$tmp_dir/${i}.log bs=`shuf -n 1 -i 0-16`k count=1 &>/dev/null
done

这里使用dd命令从/dev/zero中取数据填充小文件,其中tmp_dir变量是存放大量小文件的目录,文件的随机大小由shuf命令生成。

但是这样会非常的慢,不仅占用大量IO,操作系统还繁忙地open、close文件描述符。这样的创建方式效率极低。

为了不频繁open、close文件描述符,可以直接将创建的文件放进压缩包中,比如cpio、tar(但不要加数据压缩功能,如zip、xz等,因为压缩会占用大量cpu进行计算),等给定数量的文件创建完后再解压这个压缩包。这种方式在shell中实现起来比较复杂。

更好的方式是使用split命令,它可以将文件按给定大小均匀切分成小文件。这里可以使用/dev/zero作为数据源。

因为split只能切分成等大小的文件,所以大小无法随机,只能在一定数量的循环下,多次切分成等随机大小的文件。正如下面的for和shuf。


tmp_dir=/tmp/temp

for i in {1..100};do
    dd bs=10000 count=8192 if=/dev/zero |\
    split -b `shuf -n 1 -i 1-16`k -a 5 -d - "$tmp_dir/$i-"
done

每次循环中,dd每次生成8192*10000=8.2M的数据源,这8.2M的数据供split进行分割,分隔的每个文件都由shuf确定,比如某次shuf的值为5,那么8.2M的数据全部切分成5k大小的文件共16000个小文件。这样的操作循环100次。

这样的方式非常快,但是只循环了100次,shuf的随机数分配不够均匀,所以无法控制文件的数量,比如上面的命令可能会生成200W个文件,如果运气差可能生成400W个文件。

改成下面的,循环次数增加一些,每次数据源大小小一点:


for i in {1..10000};do
    dd bs=100 count=8192 if=/dev/zero |\
    split -b `shuf -n 1 -i 1-16`k -a 3 -d - "$i-"
done

生成100W个文件大概需要5分钟(普通固态下)。同样的,文件数量不可控制。

本文原创地址在博客园:https://www.cnblogs.com/f-ck-need-u/p/10504962.html

相关文章

  • 快速生成大量随机大小的文件

    要生成大量随机大小的文件,最简单的方法是for循环N次。 例如,生成100W个0-16K大小的小文件(尝试时请改小...

  • std::array (c++11)

    std::array是具有固定大小的数组。支持快速随机访问。不能添加或删除元素。需要包含头的头文件文件 #incl...

  • 网页JS随机圆形平铺

    需要生成大量的大小不一的圆,屏幕到画布,且不覆盖。直接随机播种+判断覆盖就行。先看HTML: 再看JS: 效果还行...

  • OpenCV:图片操作基本知识(二)

    公众号:大邓带你玩python 1.1随机生成像素 生成与test.jpg相同大小图片,但是像素是随机生成的。 1...

  • shell案例解析

    批量生成随机字符文件名称生成固定模式包含随机字符的文件名称,首先获得随机字符,拼接字符串,通过touch命令创建文...

  • Python编程快速上手|第八章项目,生成随机的考试试卷

    Python编程快速上手 让繁琐工作自动化, 第八章读写文件,练习项目--生成随机的考试试卷。

  • core文件分析

    修改文件大小core文件的生成开关和大小限制

  • 基于C++的生成随机数曲线

    VC++生成随机数曲线,根据生成的随机数的大小生成曲线,看上去像示波器一样。生成随机数的方式有三种,一种是平均分布...

  • python 批量生成随机字符串的hash值

    python 批量生成随机字符串的hash值 需求 由于测试需要,需产生大量SHA1序列,通过生成随机定长序列,然...

  • IDEA使用

    设置文字大小File--Settingsimage.pngimage.png 快速生成语句A.快速生成main()...

网友评论

      本文标题:快速生成大量随机大小的文件

      本文链接:https://www.haomeiwen.com/subject/ghjecctx.html