如何在Linux(Red Hat Linux)系统上快速创建大文件?
dd将完成这项工作,但是/dev/zero当您需要一个数百GB的文件进行测试时,读取和写入驱动器可能需要很长时间......如果您需要重复这样做,那么时间真的会增加.
我不关心文件的内容,我只是想快速创建它.如何才能做到这一点?
使用稀疏文件不适用于此.我需要为文件分配磁盘空间.
有没有一种有效的方法在Java中创建具有给定大小的文件?
我已经读过这个问题: 如何在Linux中创建具有给定大小的文件?
但我没有回答我的问题.
我想创建一个372.07 MB的文件,
我在Ubuntu 10.08中尝试了以下命令:
dd if=/dev/zero of=output.dat bs=390143672 count=1
dd: memory exhausted
Run Code Online (Sandbox Code Playgroud)
390143672 = 372.07*1024*1024
还有其他方法吗?
非常感谢!
编辑:如何在Linux命令行上使用十进制查看文件的大小.我的意思是,命令行ls -hl只是说:'373M',但文件实际上是"372.07M".
我正在编写一个程序,该程序使用动态编程来解决一个难题。DP 解决方案需要存储一个大表。整个表占用大约 300 Gb。物理上它存储在 40 ~7Gb 文件中。我用 byte 标记未使用的表条目\xFF。我想快速为这张桌子分配空间。该程序必须同时在 Windows 和 Linux 下运行。
简而言之,我想以跨平台的方式有效地创建填充特定字节的大文件。
这是我目前使用的代码:
def reset_storage(self, path):
fill = b'\xFF'
with open(path, 'wb') as f:
for _ in range(3715948544 * 2):
f.write(fill)
Run Code Online (Sandbox Code Playgroud)
创建一个 7 Gb 文件大约需要 40 分钟。我如何加快速度?
我查看了其他问题,但似乎没有一个是相关的:
\0或解决方案仅适用于 Windows在 Linux 中,如何创建具有给定文本或十六进制模式的大文件(如 DEADBEEFDEADBEEFDEADBEEF ....)
我知道 dd 可用于创建大文件,但它不会写入所需的文本或十六进制模式
dd if=/dev/urandom of=/tmp/bigfile bs=blocksize count=size
Run Code Online (Sandbox Code Playgroud)
或者
dd if=/dev/zero of=/tmp/bigfile bs=blocksize count=size
Run Code Online (Sandbox Code Playgroud)
file ×4
linux ×4
bigdata ×1
command-line ×1
filesystems ×1
java ×1
large-files ×1
python ×1
ubuntu ×1
windows ×1