首页
/
每日頭條
/
科技
/
一分鐘創建100個文件
一分鐘創建100個文件
更新时间:2026-11-12 08:45:48

一分鐘創建100個文件(1s創建100G文件最快的方法是)1

在我們日常工作中,為了驗證開發的功能,比如:文件上傳功能或者算法的處理效率等,經常需要一些大文件進行測試,有時在四處找了一頓之後,發現竟然沒有一個合适的,雖然 Linux 中也有一些命令比如:vim、touch 等可以創建文件,但是如果需要一個 100G 或者 1T 的大文件,這些命令就顯得力不從心,此時就需要能快速創建大文件命令,接下來将介紹這些命令的常見用法、命令之間的差異、以及使用時如何選擇

dd

dd 命令的語法如下

dd if=[source] of=[destination] bs=[block-size] count=[counter]

從 source 讀取并拷貝内容到 destination, source 和 destination 都是文件,前者是讀取的文件,後者是寫入的文件

bs 表示塊的大小,單位是字節,後綴中帶了字母 B的換算單位都是 1000, 比如: 1KB = 1000 Bytes、 1MB = 1000 * 1000 Bytes、1GB = 1000 * 1000 * 1000 Bytes

後綴省略了字母 B的換算單位是 1024, 比如: 1K = 1024 Bytes、 1M = 1024 * 1024 Bytes、1G = 1024 * 1024 * 1024 Bytes

count 表示塊的數量,表示 dd 命令需要執行多少次讀取并寫入的操作

bs 乘以 count 其實就表示目标文件的大小,也即需要創建的文件的大小,比如:下面的命令可以創建一個 10G 大小的文件

[root@localhost dd_cmd]# dd if=/dev/zero of=testfile bs=1G count=10 記錄了10 0 的讀入 記錄了10 0 的寫出 10737418240字節(11 GB)已複制,8.61643 秒,1.2 GB/秒 [root@localhost dd_cmd]# du -h testfile 10G testfile [root@localhost dd_cmd]#

上面的命令表示從 /dev/zero文件每次讀取 1G大小的數據并寫入當前目錄中的 testfile 文件, bs=1G count=10 表示塊大小是1G,總共有10個塊, 所以目标文件最終的大小是: 1G * 10 = 10G

/dev/zero 是一個特殊的字符設備文件,當讀取它的時候,它會返回空數據,這裡表示從 /dev/zero讀取空的數據寫入 testfile 中

命令 du -h testfile 的結果也說明了 testfile 大小是 10G

從結果可以得知,用 dd 命令創建一個 10G 大小的文件花費了約 8.6 秒

yes

前面的 dd 命令創建的是空字符的文件,如果想文件中包含自定義的字符,可以使用 yes 命令,它的作用是循環輸出一行指定的字符串,直到進程結束,為了控制文件的大小并打破循環,我們借助 head 命令來實現,使用 yes 命令創建包含指定内容文件的語法如下

yes [string] | head -c [size of file] > [name of file]

string 是寫入文件每一行的字符串

head -c [size of file] 是接收指定大小的字符串,單位是字節,後面也可以接 K、KB、M、MB、G、GB等單位

下面的實例是往 yesfile 文件寫入,每行的内容是: this is a test content , 一直到文件大小達到 10G

[root@localhost dd_cmd]# time yes "this is a test content" | head -c 10G > yesfile real 0m11.266s user 0m8.898s sys 0m13.217s [root@localhost dd_cmd]# du -h yesfile 10G yesfile

從結果可以看出,yes 命令創建一個 10G 的文件花費了 13.2 秒,比 dd 命令慢

fallocate

fallocate 命令使用下面的語法 創建大文件

fallocate -l [size of file] [name of file]

-l 選項表示文件大小,單位是字節,後面可以接 K、KB、M、MB、G、GB等單位

下面的命令是創建一個 10G 大小的文件

[root@localhost dd_cmd]# time fallocate -l 10G allocatefile real 0m0.002s user 0m0.000s sys 0m0.003s [root@localhost dd_cmd]# du -h allocatefile 10G allocatefile

上述的 time 命令隻是為了統計創建文件的時間,從結果可以看出:fallocate命令創建一個 10G 大小的文件竟然隻花費了 0.003 秒

命令 du -h allocatefile 是查看創建的文件大小,從結果可知,allocatefile 文件大小确實是 10G

truncate

truncate 命令是縮小或者擴展文件至指定大小,它的語法如下:

truncate -s [file-size] [name of the file]

-s 選項表示文件大小,單位是字節,跟 fallocate 命令一樣,後面可以接 K、KB、M、MB、G、GB等單位

下面是使用 truncate 命令創建一個 10G的文件的示例

[root@localhost dd_cmd]# time truncate -s 10G truncatefile real 0m0.002s user 0m0.000s sys 0m0.002s [root@localhost dd_cmd]# du -h truncatefile 0 truncatefile

從結果可以得到,truncate 命令 創建一個 10G的文件也隻花費了 0.002 秒,和 fallocate 差不多

但是, du -h truncatefile 命令的結果表明 truncatefile 大小為 0

原因是 truncate 命令 創建的是一個稀疏文件而不是實際的文件 ,稀疏文件不會占用磁盤空間

注意:fallocate 命令隻支持 btrfs、ext4、 ocfs2、xfs 這幾種文件系統,而 truncate 命令支持所有的現代文件系統

創建速度的差異

從上面的幾個實例可以看出,同樣是創建一個 10G的文件, fallocate 和 truncate 命令隻需要不到 0.1 秒的時間,但是 dd 命令需要 8.6 秒的時間,yes命令需要 13.2 秒,這中間相差了幾百倍,為什麼會有這麼大的差别呢?

fallocate 将空間分配給文件,但是不會往文件中寫入任何數據

truncate 創建的是稀疏文件,和 fallocate 一樣,它也不會往文件中寫入任何數據

dd 和 yes 都有寫文件操作,而這需要大量的 IO 時間,所以同樣創建 10G 的文件,它們比 fallocate 和 truncate 要慢很多

如何選擇

dd 、yes、fallocate、truncate 這幾個命令都可以創建大文件, 在日常的使用中,我們該如何選擇呢 ?

對速度沒有很高的要求的情況下,一般首選 dd ,如果希望創建的文件中寫入自定義的内容的話,使用 yes

如果想快速的創建大文件,比如 1 秒内創建一個 100G 的文件,選擇 fallocate 和 truncate ,如果還需要确保文件是實際占用磁盤空間的話,就隻剩下 fallocate 可選了

大部分情況下,fallocate 都能滿足要求,所以不想仔細分析的話,使用 fallocate 就行了

小結

本文介紹了Linux下創建大文件的幾種方法,并對所提供的方法進行了比較,最後提供了如何選擇使用哪種方法的一些建議,文中隻對 dd 、yes、fallocate、truncate 命令做了簡要的說明,更多的介紹請參考 man 文檔

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
2022冶金機械專業就業好嗎 前景怎麼樣
2022冶金機械專業就業好嗎 前景怎麼樣
冶金機械專業的學生就業率還是不錯的,但需要掌握較強的專業知識,畢業生适合到大中型冶金企業、冶金相關設備制造、冶金原輔材料生産銷售等行業從事産品設計、生産、技術開發、生産組織和管理、産品銷售、科學研究等方面的工作。冶金機械專業就業前景如何由于冶金工程專業培養的學生基礎寬厚、理論紮實、技能全面,同時,又...
2026-11-12
釀酒技術專業怎麼樣 釀酒技術專業就業方向如何
釀酒技術專業怎麼樣 釀酒技術專業就業方向如何
  高考填報志願時,釀酒技術專業怎麼樣、培養目标、就業方向、主要課程有哪些是廣大考生和家長朋友們十分關心的問題,為了方便大家查詢,已經為大家整理好了相關信息,供大家參考。  1、釀酒技術專業培養目标  本專業培養德、智、體、美全面發展,具有...
2026-11-12
微商怎麼快速加好友
微商怎麼快速加好友
1、搜索微信好友。如果需要獲得微信好友,主動添加微信好友就是一個非常好的方法。添加微信号的方式有:QQ号、手機号、郵箱号、微信号來搜索。隻需要獲取你好友的QQ号或者手機号就能夠快速的添加大量的微信好友。在微信中是可以導入通訊錄的,這是主動添加微信好友最簡單方便的方法。2、搖一搖。在微信中有一個搖一搖...
2026-11-12
2022運動人體科學學什麼課程 好就業嗎
2022運動人體科學學什麼課程 好就業嗎
教育學、高等數學、基礎化學、物理學、人體解剖與運動解剖學、人體生理與運動生理學、生物化學與運動生物化學、運動生物力學、運動保健學、運動康複學、醫務監督、臨床醫學基礎、中醫養生康複學、計算機應用、外語、體育(田徑、體操、球類等)。運動人體科學就業情況運動人體科學專業就業方向就業方向主要為教學單位、體育...
2026-11-12
2022高考職業技術學院哪些專業好就業
2022高考職業技術學院哪些專業好就業
職業技術學校主要是學習一技之長,從而走向社會的時候有更多的就業機會。在衆多職業技術學院中,就業率比較高的專業有:車輛工程技術、電子信息、乘務類專業、計算機類專業、教育類專業、臨床醫學、口腔醫學、中醫學、中藥學、護理、藥學、醫學檢驗技術、醫學影像技術、助産等。好的職業技術學校有哪些1、天津職業大學學校...
2026-11-12
Copyright 2023-2026 - www.tftnews.com All Rights Reserved