dd

複製文件並對原文件的內容進行轉換和格式化處理

補充說明

dd命令 用於複製文件並對原文件的內容進行轉換和格式化處理。dd命令功能很強大的,對於一些比較底層的問題,使用dd命令往往可以得到出人意料的效果。用的比較多的還是用dd來備份裸設備。但是不推薦,如果需要備份oracle裸設備,可以使用rman備份,或使用第三方軟件備份,使用dd的話,管理起來不太方便。

建議在有需要的時候使用dd 對物理磁盤操作,如果是文件系統的話還是使用tar backup cpio等其他命令更加方便。另外,使用dd對磁盤操作時,最好使用塊設備文件。

語法

1dd(選項)

選項

 1bs=<字節數>:將ibs(輸入)與obs(輸出)設成指定的字節數;
 2cbs=<字節數>:轉換時,每次只轉換指定的字節數;
 3conv=<關鍵字>:指定文件轉換的方式;
 4count=<區塊數>:僅讀取指定的區塊數;
 5ibs=<字節數>:每次讀取的字節數;
 6obs=<字節數>:每次輸出的字節數;
 7if=<文件>:輸入文件;
 8of=<文件>:輸出到文件;
 9seek=<區塊數>:一開始輸出時,跳過指定的區塊數;
10skip=<區塊數>:一開始讀取時,跳過指定的區塊數;
11--help:幫助;
12--version:顯示版本信息。

實例

1[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
21+0 records in
31+0 records out
41048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s
5
6[root@localhost text]# du -sh sun.txt 
71.1M    sun.txt

該命令創建了一個1M大小的文件sun.txt,其中參數解釋:

  • if 代表輸入文件。如果不指定if,默認就會從stdin中讀取輸入。
  • of 代表輸出文件。如果不指定of,默認就會將stdout作爲默認輸出。
  • bs 代表字節爲單位的塊大小。
  • count 代表被複制的塊數。
  • /dev/zero 是一個字符設備,會不斷返回0值字節(\0)。

塊大小可以使用的計量單位表

單元大小 代碼
字節(1B) c
字節(2B) w
塊(512B) b
千字節(1024B) k
兆字節(1024KB) M
吉字節(1024MB) G

以上命令可以看出dd命令來測試內存操作速度:

11048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

生成隨機字符串

我們甚至可以使用 /dev/urandom 設備配合 dd 命令 來獲取隨機字符串。

1[root@localhost ~]# dd if=/dev/urandom bs=1 count=15|base64 -w 0
215+0 records in
315+0 records out
415 bytes (15 B) copied, 0.000111993 s, 134 kB/s
5wFRAnlkXeBXmWs1MyGEs

測試磁盤寫入速度

1[root@localhost ~]# dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
21+0 records in
31+0 records out
41073741824 bytes (1.1 GB) copied, 7.10845 s, 151 MB/s

測試磁盤讀取速度

1[root@localhost ~]# dd if=/tmp/testfile of=/dev/null bs=1G count=1 iflag=direct
21+0 records in
31+0 records out
41073741824 bytes (1.1 GB) copied, 6.53009 s, 164 MB/s

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: