首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在windows上创建fsutil文件,在linux上创建dd

在windows上创建fsutil文件,在linux上创建dd
EN

Stack Overflow用户
提问于 2017-11-16 10:04:43
回答 1查看 2.1K关注 0票数 0

作为标题,我想知道windows中的fsutil如何能够这么快地创建一个非常大的文件。它真的为该文件分配了真正的集群,还是只是记录了文件的元数据?考虑以下两个命令:

代码语言:javascript
复制
fsutil file createnew testFile <1Tb>
dd if=/dev/zero of=testFile bs=1024M count=1024

所以我创建了一个1Tb大小的文件,问题是fsutil,文件几乎是立即创建的,但是对于dd,它需要超过1个小时才能完成。因此,我猜想fsutil只将元数据写入文件头,真正的文件集群将在需要时扩展。我想得对吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-23 20:15:45

来自Microsoft文档

createnew创建指定名称和大小的文件,其内容由零组成。

从这里,您可以说文件必须是所有零(由零组成的...with内容)。

但是,如果这是真的

代码语言:javascript
复制
[...]the file is nearly created immediately[...]

我认为您是对的:可能,fsutil在执行时创建文件时标记为空闲的字节,但不会写入这些字节

当您这样使用dd

代码语言:javascript
复制
dd if=/dev/zero of=testFile bs=1024M count=1024

您实际上是在新文件的每个字节中写入“逐字节”的零。

你可以这样做:

代码语言:javascript
复制
fsutil file createnew testFile_fsutil <1Tb>   #(on Windows)

dd if=/dev/zero of=testFile_dd bs=1024M count=1024   #(on Linux)

然后,您可以在任何十六进制编辑器上看到testFile_fsutil的内容,并查找非零字节,或者更准确地说,从Linux中可以找到( 1099511627776字节=1 tebi字节)。

代码语言:javascript
复制
cmp --bytes=1099511627776 testFile_fsutil testFile_dd

代码语言:javascript
复制
cmp --bytes=1099511627776 testFile_fsutil /dev/zero

甚至使用散列:

代码语言:javascript
复制
dd if=/dev/zero bs=1024M count=1024 | sha1sum

返回

fea475204f4ad1348f21fad930a7c721a2858971

所以,

代码语言:javascript
复制
dd if=testFile_fsutil bs=1024M count=1024 | sha1sum

必须返回同样的。

Note__:为了更快地证明您的观点,您可以使用一个更小的文件进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47326725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档