Linux / UNIX:使用 dd 命令创建 1GB 大小的二进制映像文件
可以使用该dd命令创建镜像文件,用于网络或者文件系统的测试,需要使用以下命令:
- fallocate命令 – 为文件预先分配空间。
- truncate命令 – 将文件大小缩小或扩大到指定大小。
- dd命令 - 转换和复制文件,即克隆/创建/覆盖图像。
- df命令——显示可用磁盘空间。
- du命令 – 显示磁盘使用情况统计信息。
- ls命令——列出文件大小。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | fallocate 或 dd 命令 |
预计阅读时间 | 3 分钟 |
fallocate 命令语法
基本语法是:
fallocate -l Image_Size_Here /path/to/image.img
让我们看看如何使用 fallocate 创建 1GB 大小的二进制文件。
使用 fallocate 命令在 Linux 上创建大文件
以下命令将创建1G的文件:
fallocate -l 1G test.img
使用 ls 命令验证新的磁盘映像:
$ ls -lh test.img
示例输出:
-rw-r--r--. 1 root root 1.0G Nov 27 03:42 test.img
您可以使用 stat 或 du 命令来验证块分配:
$ stat test.img File: `test.img' Size: 1073741824 Blocks: 2097160 IO Block: 4096 regular file Device: 805h/2053d Inode: 9043983 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2013-11-27 03:42:27.575841698 -0600 Modify: 2013-11-27 03:42:27.575841698 -0600 Change: 2013-11-27 03:51:06.108962462 -0600 $ du -h test.img 1048580 test.img
要创建 100M 大小,请输入:
fallocate -l 100M file.out
该-l选项指定分配的长度(以字节为单位)。可以指定 k、m、g、t、p、e 后缀来表示 KiB、MiB、GiB 等。
dd 命令语法
注意:以下信息仅适用于较旧版本的 Linux 和/或fallocate命令不可用的情况。如果可能,请仅使用 fallocate 命令来创建二进制映像。基于 dd 命令的方法被视为旧方法且不推荐使用,但仅出于历史原因在此介绍。
基本语法是:
dd if=/path/to/input of=/path/to/output [options]
## OR ##
dd if=/dev/zero of=/path/to/output.img [options]
## OR ##
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
总结
您学习了如何在 Linux 或类 Unix 系统上使用 dd 和其他命令创建 1GB(或您选择的任何大小)的大型二进制映像文件。有关更多信息,请参阅手册页:
man dd
man fallocate