一、dd指令用指定大小的塊拷貝一個檔案,并在拷貝的同時進行指定的轉換。
使用方法:dd [OPERAND]
參數注釋:
<code> </code><code>bs=BYTES </code><code>read</code> <code>and write BYTES bytes at a </code><code>time</code> <code>(also see ibs=,obs=)</code>
<code> </code><code>cbs=BYTES convert BYTES bytes at a </code><code>time</code>
<code> </code><code>conv=CONVS convert the </code><code>file</code> <code>as per the comma separated symbol list</code>
<code> </code><code>count=N copy only N input blocks</code>
<code> </code><code>ibs=BYTES </code><code>read</code> <code>BYTES bytes at a </code><code>time</code> <code>(default: 512)</code>
<code> </code><code>if</code><code>=FILE </code><code>read</code> <code>from FILE instead of stdin(預設為标準輸入)</code>
<code> </code><code>iflag=FLAGS </code><code>read</code> <code>as per the comma separated symbol list</code>
<code> </code><code>obs=BYTES write BYTES bytes at a </code><code>time</code> <code>(default: 512)</code>
<code> </code><code>of=FILE write to FILE instead of stdout(預設為标準輸出)</code>
<code> </code><code>oflag=FLAGS write as per the comma separated symbol list</code>
<code> </code><code>seek=BLOCKS skip BLOCKS obs-sized blocks at start of output</code>
<code> </code><code>skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input</code>
<code> </code><code>status=WHICH WHICH info to suppress outputting to stderr;</code>
<code> </code><code>'noxfer'</code> <code>suppresses transfer stats, </code><code>'none'</code> <code>suppresses all</code>
CONVS的可選參數
<code> </code><code>ascii from EBCDIC to ASCII</code>
<code> </code><code>ebcdic from ASCII to EBCDIC</code>
<code> </code><code>ibm from ASCII to alternate EBCDIC</code>
<code> </code><code>block pad newline-terminated records with spaces to cbs-size</code>
<code> </code><code>unblock replace trailing spaces </code><code>in</code> <code>cbs-size records with newline</code>
<code> </code><code>lcase change upper </code><code>case</code> <code>to lower </code><code>case</code>
<code> </code><code>nocreat </code><code>do</code> <code>not create the output </code><code>file</code>
<code> </code><code>excl fail </code><code>if</code> <code>the output </code><code>file</code> <code>already exists</code>
<code> </code><code>notrunc </code><code>do</code> <code>not truncate the output </code><code>file</code>
<code> </code><code>ucase change lower </code><code>case</code> <code>to upper </code><code>case</code>
<code> </code><code>sparse try to seek rather than write the output </code><code>for</code> <code>NUL input blocks</code>
<code> </code><code>swab swap every pair of input bytes</code>
<code> </code><code>noerror </code><code>continue</code> <code>after </code><code>read</code> <code>errors</code>
<code> </code><code>sync</code> <code>pad every input block with NULs to ibs-size; when used</code>
<code> </code><code>with block or unblock, pad with spaces rather than NULs</code>
<code> </code><code>fdatasync physically write output </code><code>file</code> <code>data before finishing</code>
<code> </code><code>fsync likewise, but also write metadata</code>
FLAGS的可選參數
<code> </code><code>append append mode (makes sense only </code><code>for</code> <code>output; conv=notrunc suggested)</code>
<code> </code><code>direct use direct I</code><code>/O</code> <code>for</code> <code>data</code>
<code> </code><code>directory fail unless a directory</code>
<code> </code><code>dsync use synchronized I</code><code>/O</code> <code>for</code> <code>data</code>
<code> </code><code>sync</code> <code>likewise, but also </code><code>for</code> <code>metadata</code>
<code> </code><code>fullblock accumulate full blocks of input (iflag only)</code>
<code> </code><code>nonblock use non-blocking I</code><code>/O</code>
<code> </code><code>noatime </code><code>do</code> <code>not update access </code><code>time</code>
<code> </code><code>noctty </code><code>do</code> <code>not assign controlling terminal from </code><code>file</code>
<code> </code><code>nofollow </code><code>do</code> <code>not follow symlinks</code>
<code> </code><code>count_bytes treat </code><code>'count=N'</code> <code>as a byte count (iflag only)</code>
注意:指定數字的地方若以下列字元結尾,則乘以相應的數字:
c =1, w =2, b =512, kB =1000, K =1024, MB =1000*1000, M =1024*1024, xM =M
GB =1000*1000*1000, G =1024*1024*1024, and so on for T, P, E, Z, Y
二、使用執行個體
1、将本地的/dev/hdb整盤備份到/dev/hdd
<code>dd</code> <code>if</code><code>=</code><code>/dev/hdb</code> <code>of=</code><code>/dev/hdd</code>
2、将/dev/hdb全盤資料備份到指定路徑的image檔案
<code>dd</code> <code>if</code><code>=</code><code>/dev/hdb</code> <code>of=</code><code>/root/image</code>
3、備份/dev/hdb全盤資料,并利用gzip工具進行壓縮,儲存到指定路徑
<code>dd</code> <code>if</code><code>=</code><code>/dev/hdb</code> <code>| </code><code>gzip</code> <code>> </code><code>/root/image</code><code>.gz</code>
4、把一個檔案拆分為3個檔案
<code>#檔案大小為2.3k</code>
<code>[oracle@rhel6 ~]$ ll db1_db_links.sql </code>
<code>-rw-r--r-- 1 oracle oinstall 2344 Nov 21 10:39 db1_db_links.sql</code>
<code>#把這個檔案拆成每個檔案1k,bs=1k,count=1,使用skip參數指定在輸入檔案中跳過多少個bs支讀取</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>if</code><code>=db1_db_links.sql of=dd01.sql bs=1k count=1</code>
<code>1+0 records </code><code>in</code>
<code>1+0 records out</code>
<code>1024 bytes (1.0 kB) copied, 4.5536e-05 s, 22.5 MB</code><code>/s</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>if</code><code>=db1_db_links.sql of=dd02.sql bs=1k count=1 skip=1</code>
<code>1024 bytes (1.0 kB) copied, 0.000146387 s, 7.0 MB</code><code>/s</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>if</code><code>=db1_db_links.sql of=dd03.sql bs=1k count=1 skip=2</code>
<code>0+1 records </code><code>in</code>
<code>0+1 records out</code>
<code>296 bytes (296 B) copied, 0.000204216 s, 1.4 MB</code><code>/s</code>
<code>#拆分出的檔案</code>
<code>[oracle@rhel6 ~]$ ll </code><code>dd</code><code>*sql</code>
<code>-rw-r--r-- 1 oracle oinstall 1024 May 20 14:58 dd01.sql</code>
<code>-rw-r--r-- 1 oracle oinstall 1024 May 20 14:58 dd02.sql</code>
<code>-rw-r--r-- 1 oracle oinstall 296 May 20 14:58 dd03.sql</code>
5、把拆分出的檔案合并為1個
<code>#合并操作,此時用到seek參數,用于指定在輸入檔案中跳過的bs數</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>of=1.sql </code><code>if</code><code>=dd01.sql </code>
<code>2+0 records </code><code>in</code>
<code>2+0 records out</code>
<code>1024 bytes (1.0 kB) copied, 0.000176 s, 5.8 MB</code><code>/s</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>of=1.sql </code><code>if</code><code>=dd02.sql bs=1k seek=1</code>
<code>1024 bytes (1.0 kB) copied, 0.000124038 s, 8.3 MB</code><code>/s</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>of=1.sql </code><code>if</code><code>=dd03.sql bs=1k seek=2</code>
<code>296 bytes (296 B) copied, 0.00203881 s, 145 kB</code><code>/s</code>
<code>#與拆分前的檔案進行校驗</code>
<code>[oracle@rhel6 ~]$ </code><code>diff</code> <code>1.sql db1_db_links.sql</code>
<code>[oracle@rhel6 ~]$</code>
6、在輸出檔案中指定的位置插入資料,而不截斷輸出檔案
<code>需要使用conv=notrunc參數</code>
<code>[oracle@rhel6 ~]$ </code><code>dd</code> <code>if</code><code>=2.sql of=1.sql bs=1k seek=1 count=2 conv=notrunc</code>
<a href="http://blog.csdn.net/jijiagang/article/details/42192049" target="_blank">http://blog.csdn.net/jijiagang/article/details/42192049</a>
本文轉自hbxztc 51CTO部落格,原文連結:http://blog.51cto.com/hbxztc/1927774,如需轉載請自行聯系原作者