【问题标题】:What is a good method for making a huge test file?制作巨大的测试文件的好方法是什么?
【发布时间】:2009-04-01 19:50:19
【问题描述】:

我正在尝试测试我刚刚编写的一些流式文件上传/下载代码,但我需要一个巨大的(比我的内存大,如 > 4GB)文件来测试。有什么好方法可以快速生成特定大小的文件(但里面没有特定数据)?

我知道我可以在我的硬盘驱动器周围寻找一个适当大小的文件,但我很好奇是否有任何其他好的方法可以生成测试文件,特别是如果我想要一个特定大小的文件。下载文件也不好,因为我的连接很慢。

【问题讨论】:

  • 由于很多答案都是针对unix的,你能指定你的平台吗?
  • 这并不重要(对任何操作系统上的答案感兴趣),但我现在在 *nix 平台上。

标签: testing file


【解决方案1】:

在 Unix 上这很容易:

head -c <numbytes> /dev/random > bigfile.dat

所以对于 4 GB,这将是 approximately

head -c 4294967296 /dev/random > bigfile.dat

【讨论】:

  • 对于大文件,我永远不会使用 /dev/random 而是 /dev/urandom - random 有更多的熵,但很可能会在生成它时阻塞,而 urandom 将是一个“足够好”的来源不会阻塞的随机性。
【解决方案2】:

在 *nix 系统上,您可以创建一个几乎不使用任何实际磁盘空间的稀疏文件。

dd if=/dev/zero bs=1 seek=4294967295 count=1 of=4G
ls -l 4G
-rw-r--r-- 1 me wheel 4294967296 2009-04-01 13:28 4G

这会创建一个开头有 4GB - 1 大小的孔的文件。该漏洞不消耗文件系统块。您甚至可以创建太大而无法放入文件系统的稀疏文件。从孔中读取返回零。

【讨论】:

  • 太好了,效果很好。 (虽然如果我尝试测试任何涉及压缩算法的东西,我肯定会使用不同的方法。)
【解决方案3】:

在 Windows 上,您还可以使用 fsutil 命令:

Usage : fsutil file createnew <filename> <length>
   Eg : fsutil file createnew C:\testfile.txt 1000

这将创建一个名为 testfile.txt 的文件,大小为 1,000 字节。该文件只包含 NUL,如果这很重要的话。

【讨论】:

    【解决方案4】:

    在 *nix 平台上,您可以执行以下操作:

    dd if=/dev/zero of=test5000M.bin bs=5000000000 count=1
    

    这会生成一个 5000mb 的文件,里面什么都没有。

    在 Windows 上,这样的东西应该可以工作:

    fsutil file createnew test5000M.bin 5000000000
    

    【讨论】:

    • 我刚试了dd,bs不接受这么大的数!它给了我这个错误:“dd: invalid number `5000000000'”
    • 如果文件传输有任何类型的压缩,使用空文件可能不代表典型用法,因为它会压缩得太好。
    【解决方案5】:

    这里是 a function 在 Windows PowerShell 中执行此操作:

    function Create-TestFile([string]$location, [long]$sizeInBytes, [int]$numberOfFiles = 1 ,[char]$fillerChar="X")
    {
    $fc = new-object string ($fillerChar, $sizeInBytes ) ;
    1..$numberOfFiles | %{ [io.file]::WriteAllText("$location\TestFile-$_.txt", $fc) }
    }
    

    以下是您的使用方法:

    Create-TestFile "C:\temp" 2100 #creates a file 2100 bytes in size.
    

    【讨论】:

      【解决方案6】:

      我过去只是在文件末尾进行查找和写入,以分配大块。

      但是,根据您使用的大小,这可能会失败。 (根据我在 WinXP 上的经验,接近 1.2 TB 的限制)

      我成功地将这种方法用于硬盘老化应用程序,适用于多种不同的系统配置。

      【讨论】:

        【解决方案7】:

        以前我曾经使用过一个eatbits.exe 实用程序。您可以在哪里创建这些文件。它们对于安装测试非常有价值。

        我在网上的任何地方都找不到eatbits,它可能是我工作的公司的内部实用程序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-12-25
          • 2013-07-03
          • 2010-11-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多