dd指定生成大文件
dd if=/dev/zero of=test.file bs=20M count=50
其中if參數是讀取的文件,of參數是寫入的文件,bs是每次讀取大小,count是讀取次數;
生成1GB大小的文件,測試內網網網速;
小文件
dd if=/dev/zero of=test oflag=dsync bs=32k count=1k
大文件
dd if=/dev/zero of=test.file bs=20M count=50
Linux生成指定大小文件的方法
dd if=/dev/zero of=50M.file bs=1M count=50
在當前目錄下生成一個50M的文件
————————————分隔線——————————————–
如果你想了解更多,請看下面的擴展閱讀
虛擬塊設備文件更通用的名稱是硬盤鏡像文件(Hard Disk Image),但不是所有的硬盤鏡像文件都是虛擬塊設備文件,例如,目前Ghost的GHO格式的鏡像文件就不能成為虛擬機中的硬盤。
Linux的dd命令,用來生成虛擬塊設備文件。既可以用於創建空鏡像文件,也可以用於創建物理硬盤的鏡像。
dd if=/dev/hda0 of=/home/oldsong/hda0.image records in4757130+0 records out
將/dev/hda0的內容復制到/home/oldsong/hda0.image文件。
參數if(input file)告訴dd從哪個文件讀取數據,參數 of(output file)告訴dd讀出的數據寫入哪個文件中。
注意,對於dd來說,輸入和輸出都是文件,dd做的只是文件拷貝工作,這得益於Unix/Linux下面將設備也抽象為特殊的文件。
一般來說設備文件有兩種,一種是塊設備,一種是字符設備。塊設備的特點是可以隨機讀寫(Random Access),比如內存、硬盤等。字符設備的特點是順序讀寫(Sequential Access),比如鼠標,鍵盤,麥克風等。
前面說了如何生成物理硬盤的鏡像,如果想生成空鏡像文件(本文的主要目的),還需要一個特殊的設備。/dev/zero是Linux提供的一個特殊的字符設備,它的特點是可以永遠讀該文件,每次讀取的結果都是二進制0。下面的命令可以生成一個100M的空鏡像文件:
dd if=/dev/zero of=50M.file bs=1M count=50
bs=1M表示每一次讀寫1M數據,count=50表示讀寫 50次, 這樣就指定了生成文件的大小為50M。bs參數還可以進一步細分為ibs和obs兩種,為讀操作與寫操作分別指定不同的Buffer大小。
這樣就生成50M的空鏡像文件,問題是,如果要生成1G的虛擬塊設備文件,就得占用1G的硬盤空間,而這個鏡像文件完全是空的,是不是有一點浪費?好在Linux支持Sparse(稀疏)文件。請看下面的例子
dd if=/dev/zero of=1G.img bs=1M seek=1000 count=0
ls -l 1G.img
-rw-r-r- 1 root root 1048576000 Mar 25 15:32 1G.img
du -m 1G.img
0 1G.img
這里用了一個新的命令seek,表示略過1000個Block不寫(這里Block按照bs的定義是1M),count=0表示寫入0個Block。用ls(查看文件大小)命令看新生成的文件,大小可以看出是1000M。但是再用du(查看文件占用空間)一看,實際占用硬盤大小只有0M。
dd 尋找大文件內的部分"行"
20130927
dd bs=4096(塊大小,為字節) count=1000(一共只找1000塊) skip=66000000(跳過這么多塊) if=/var/log/syslog(輸入文件名) of=/opt/test.log(輸出文件名)