Linux/UNIX:使用dd命令创建大的1GB二进制镜像文件

时间:2020-01-09 10:40:08  来源:igfitidea点击:

如何在UNIX/Linux/BSD操作系统下使用Shell提示符在dd命令下立即创建1 GB或10 GB的镜像文件?
您可以使用" dd"命令来创建用于网络或文件系统测试的镜像文件。
您需要使用以下命令:

  • fallocate命令为文件预分配空间。
  • truncate命令将文件的大小缩小或扩展到指定的大小。
  • dd命令转换并复制文件,即克隆/创建/覆盖镜像。
  • df命令显示可用磁盘空间。
  • du命令显示磁盘使用情况统计信息。
  • ls命令列出文件大小。

fallocate命令语法

基本语法为:

fallocate -l Image_Size_Here /path/to/image.img

使用fallocate命令在Linux上创建大文件

以下命令将创建1G文件:

fallocate -l 1G test.img

使用ls命令验证新磁盘镜像:

$ ls -lh test.img 

您可以使用stat或du命令来验证块分配:

stat test.img

要创建100M大小的文件,请执行:

fallocate -l 100M file.out

-l选项指定分配的长度(以字节为单位)。

后缀可以指定为k,m,g,t,p,e,表示KB,MB,GB,TB,PB,EB等。

dd命令语法

注意:以下信息仅适用于旧版本的Linux和/或在fallocate命令不可用时。
如果可能,请仅使用fallocate命令创建二进制镜像。
基于dd命令的方法被认为是"旧的,不推荐使用",但此处仅出于历史原因在此介绍。

基本语法是:

dd if=/path/to/input of=/path/to/output [options]

或者

dd if=/dev/zero of=/path/to/output.img [options]

或者

dd if=/dev/zero of=YOUR-IMAGE-FILE-NAME-HERE bs=1 count=0 seek=Size-HERE

使用dd命令创建镜像文件

首先,请确保您有足够的磁盘空间来使用dd创建镜像文件:

$ df -H

要创建1MB文件(1024kb),请执行:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=1024

使用上述语法,您将获得一个任意大小的空文件(也称为"稀疏文件")。
要创建10MB文件,请执行:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*10]

要创建100MB文件,请执行:

$ dd if=/dev/zero of=test.img bs=1024 count=0 seek=$[1024*100]
$ ls -lh test.img

要创建1GB,文件:

$ dd if=/dev/zero of=1g.img bs=1 count=0 seek=1G

输出示例:

0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000235686 s, 0.0 kB/s

验证文件大小(注意原始dd命令中的bs因素):

$ ls -lh 1g.img
$ stat 1g.img
$ du -h 1g.im

dd技巧:在Unix或Linux中创建给定大小的文件

如果truncate命令不可用,请尝试以下语法:dd if =/dev/zero of =/path/to/fiie.img bs = YOUR-FILE-SIZE-HERE count = 1在此示例中,使用以下命令创建文件: 1G(在* BSD/OS X上使用1g)大小:

$ dd if=/dev/zero of=1g.bin bs=1G count=1

输出示例:

1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 8.12307 s, 132 MB/s

验证文件大小/块:

$ stat 1g.bin

输出示例:

File: `1g.bin'
  Size: 1073741824	Blocks: 2097152    IO Block: 4096   regular file
Device: 805h/2053d	Inode: 9043988     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-11-27 04:15:02.962662890 -0600
Modify: 2013-11-27 04:15:03.769673943 -0600
Change: 2013-11-27 04:15:03.769673943 -0600