1. 程式人生 > >使用dd命令在Linux下建立大檔案,批量大小檔案生成方法

使用dd命令在Linux下建立大檔案,批量大小檔案生成方法

前沿:最近在開發自動從U盤拷貝大批量檔案到linux系統的的功能。由於需要幾十個G的大檔案來做測試,如果自己去找這麼多資源,然後再拷貝,非常麻煩。所以學了下dd命令,現在總結一下:

一、引數介紹

if=FILE         從FILE中讀取資料,而不是預設的標準輸入。   if可理解為:in  file
of=FILE        往FILE中寫入資料,而不是預設的標準輸出。  of可理解為:out file
ibs=BYTES   讀取資料時,一次性讀出BYTES大小的塊,如果不指定,預設512位元組。
obs=BYTES  寫入資料時,一次性寫入BYTES大小的塊,如果不指定,預設512位元組。
bs=bytes      #輸入輸出塊大小。同時設定讀寫塊的大小為 bytes ,可代替 ibs 和 obs 。 
cbs=bytes     #一次轉換 bytes 個位元組,即轉換緩衝區大小。 。
skip=N          跳過N*ibs位元組數再開始讀取資料。
seek=N        跳過N*obs位元組數再開始寫入資料。
count=N      總共讀取N*ibs位元組數的資料,當然寫入的資料也是這個大小。

二、建立指定檔案大小,並且寫入U盤

dd if=/dev/zero of=hi.mp4 bs=1M count=1000

在當前目錄下會生成一個1000M的test檔案,檔案內容為全0(因從/dev/zero中讀取,/dev/zero為0源),但是這樣為實際寫入硬碟,檔案產生速度取決於硬碟讀寫速度,如果欲產生超大檔案,速度很慢。

三、建立指定檔案大小,但是不寫入U盤(建立速度非常快)

我們只想讓檔案系統認為存在一個超大檔案在此,但是並不實際寫入硬碟

dd if=/dev/zero of=test bs=1M count=0 seek=100000

此時建立的檔案在檔案系統中的顯示大小為100000MB,但是並不實際佔用block,因此建立速度與記憶體速度相當,seek的作用是跳過輸出檔案中指定大小的部分,這就達到了建立大檔案,但是並不實際寫入的目的。當然,因為不實際寫入硬碟,所以你在容量只有10G的硬碟上建立100G的此類檔案都是可以的。
 

四、批量隨機生成 40個1G的大mp4檔案,我用的就是這個:

seq 40 |xargs -i dd if=/dev/zero 0f={}.mp4 bs=1001001024 count=1