博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux生成指定大小文件的方法
阅读量:6881 次
发布时间:2019-06-27

本文共 1357 字,大约阅读时间需要 4 分钟。

hot3.png

# dd if=/dev/zero of=50M.file bs=1M count=50

在当前目录下生成一个50M的文件

————————————分隔线——————————————–

如果你想了解更多,请看下面的扩展阅读

虚拟块设备文件更通用的名称是硬盘镜像文件(Hard Disk Image),但不是所有的硬盘镜像文件都是虚拟块设备文件,例如,目前Ghost的GHO格式的镜像文件就不能成为虚拟机中的硬盘。

Linux的dd命令,用来生成虚拟块设备文件。既可以用于创建空镜像文件,也可以用于创建物理硬盘的镜像。

# dd if=/dev/hda0 of=/home/oldsong/hda0.image records in4757130+0 records out

将/dev/hda0的内容复制到/home/oldsong/hda0.image文件。

参数if(input file)告诉dd从哪个文件读取数据,参数 of(output file)告诉dd读出的数据写入哪个文件中。
注意,对于dd来说,输入和输出都是文件,dd做的只是文件拷贝工作,这得益于Unix/Linux下面将设备也抽象为特殊的文件。

一般来说设备文件有两种,一种是块设备,一种是字符设备。块设备的特点是可以随机读写(Random Access),比如内存、硬盘等。字符设备的特点是顺序读写(Sequential Access),比如鼠标,键盘,麦克风等。

前面说了如何生成物理硬盘的镜像,如果想生成空镜像文件(本文的主要目的),还需要一个特殊的设备。/dev/zero是Linux提供的一个特殊的字符设备,它的特点是可以永远读该文件,每次读取的结果都是二进制0。下面的命令可以生成一个100M的空镜像文件:

# dd if=/dev/zero of=50M.file bs=1M count=50

bs=1M表示每一次读写1M数据,count=50表示读写 50次,这样就指定了生成文件的大小为50M。bs参数还可以进一步细分为ibs和obs两种,为读操作与写操作分别指定不同的Buffer大小。

这样就生成50M的空镜像文件,问题是,如果要生成1G的虚拟块设备文件,就得占用1G的硬盘空间,而这个镜像文件完全是空的,是不是有一点浪费?好在Linux支持Sparse(稀疏)文件。请看下面的例子

# dd if=/dev/zero of=1G.img bs=1M seek=1000 count=0# ls -l 1G.img-rw-r-r- 1 root root 1048576000 Mar 25 15:32 1G.img# du -m 1G.img0	1G.img

这里用了一个新的命令seek,表示略过1000个Block不写(这里Block按照bs的定义是1M),count=0表示写入0个Block。用ls(查看文件大小)命令看新生成的文件,大小可以看出是1000M。但是再用du(查看文件占用空间)一看,实际占用硬盘大小只有0M。

标签: 
>>原创文章,欢迎转载。转载请注明:转载自 ,谢谢!
>>原文链接地址:

转载于:https://my.oschina.net/uniquejava/blog/478008

你可能感兴趣的文章
Hbase写入hdfs源码分析
查看>>
sencha cmd metadata
查看>>
【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据
查看>>
MySQL 性能优化
查看>>
Aspose.Total 套包组件介绍
查看>>
做好四点让网站内容更受青睐
查看>>
财源滚滚的第三方支付牌照
查看>>
NAT
查看>>
Linux基金会Hyperledger项目再添新成员:LG
查看>>
firebug转载
查看>>
个人--IT职业规划表
查看>>
ASP.NET MVC 5 -从控制器访问数据模型
查看>>
深入浅出OOP(二): 多态和继承(继承)
查看>>
mysql安装
查看>>
LAMP 加密以及防砍设定
查看>>
如何用U盘安装CentOS7系统?
查看>>
Center OS 5.5 下Subversion自启动脚本
查看>>
es6快速入门
查看>>
在CentOS 7上搭建lamp环境
查看>>
header设置跨域问题
查看>>