您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“l(fā)inux中dd命令有什么用”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“l(fā)inux中dd命令有什么用”這篇文章吧。
dd 命令
由來(全稱):本來應(yīng)根據(jù)其功能描述“Convert an copy”命名為“cc”,但“cc”已經(jīng)被用以代表“CComplier”,所以命名為“dd”
開篇例子:
1. dd if=infile.log of=outfile.log bs=1M count=1
拷貝 infile.log內(nèi)容 到 outfile.log. 一次讀寫比特?cái)?shù)為1M , 每次讀寫一個(gè)塊(1M,由bs決定)
2. echo -n "hello world" | dd cbs=1 conv=unblock 2>/dev/null
主要演示cbs,每次轉(zhuǎn)換一個(gè)字節(jié), conv=unblock 是將cbs 大小的塊中尾部的空格替換為一個(gè)換行符 2> 是錯(cuò)誤信息輸出流 /dev/null 開頭介紹了
解讀help:
(不愿意看這么一大段,嘗試先跳過,看解讀)
用法:dd [操作數(shù)] ...
或:dd 選項(xiàng)
復(fù)制文件,依照操作數(shù)轉(zhuǎn)換并格式化。
bs=比特?cái)?shù) 一次讀寫的比特?cái)?shù)
cbs=比特?cái)?shù) 一次轉(zhuǎn)換的比特?cái)?shù)
conv=CONVS 依照每個(gè)逗號(hào)分割的標(biāo)志列表轉(zhuǎn)換文件
count=塊數(shù) 只將指定個(gè)塊數(shù)復(fù)制到塊
ibs=比特?cái)?shù) 一次讀取的比特?cái)?shù)(默認(rèn):512)
if=文件 從指定文件中讀取
iflag=符號(hào) 按照以逗號(hào)分隔的符號(hào)列表指定的方式讀取
obs=比特?cái)?shù) 一次寫入指定比特?cái)?shù)(默認(rèn):512)
of=文件 寫入到指定文件
oflag=符號(hào) 按照以逗號(hào)分隔的符號(hào)列表指定的方式寫入
seek=塊數(shù) 在輸出開始處跳過指定的塊數(shù)
skip=塊數(shù) 在輸入開始處跳過指定的塊數(shù)
status=noxfer 禁止傳輸統(tǒng)計(jì)
塊和字節(jié)數(shù)后可能帶有以下的一個(gè)或多個(gè)后綴:
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.
每個(gè) CONV 符號(hào)可能為:
ascii 由EBCDIC 碼轉(zhuǎn)換至ASCII 碼
ebcdic 由ASCII 碼轉(zhuǎn)換至EBCDIC 碼
ibm 由ASCII 碼轉(zhuǎn)換至替換的EBCDIC 碼
block 將結(jié)束字符塊里的換行替換成等長的空格
unblock 將cbs 大小的塊中尾部的空格替換為一個(gè)換行符
lcase 將大寫字符轉(zhuǎn)換為小寫
ucase 將小寫字符轉(zhuǎn)換為大寫
swab 交換每一對輸入數(shù)據(jù)字節(jié)
sync 將每個(gè)輸入數(shù)據(jù)塊以NUL 字符填滿至ibs 的大?。划?dāng)配合block
或unblock 時(shí),會(huì)以空格代替NUL 字符填充
excl fail if the output file already exists
nocreat do not create the output file
notrunc 不截?cái)噍敵鑫募?
noerror 讀取數(shù)據(jù)發(fā)生錯(cuò)誤后仍然繼續(xù)
fdatasync 結(jié)束前將輸出文件數(shù)據(jù)寫入磁盤
fsync 類似上面,但是元數(shù)據(jù)也一同寫入
FLAG 符號(hào)可以是:
append 追加模式(僅對輸出有意義;隱含了conv=notrunc)
direct 使用直接I/O 存取模式
directory 除非是目錄,否則 directory 失敗
dsync 使用同步I/O 存取模式
sync 與上者類似,但同時(shí)也對元數(shù)據(jù)生效
fullblock 為輸入積累完整塊(僅iflag)
nonblock 使用無阻塞I/O 存取模式
noatime 不更新存取時(shí)間
nocache 丟棄緩存數(shù)據(jù)
noctty 不根據(jù)文件指派控制終端
nofollow 不跟隨鏈接文件
解讀:
1. bs ibs obs cbs
bs: 一次 讀寫 = ibs+obs
ibs: 一次讀
obs: 一次寫
cbs: 一次轉(zhuǎn)換
2. if of
if 是讀取的文件
of 是輸出的文件
3. seek skip
skip 在從if中讀取時(shí) 跳過多少比特
seek 在寫入of時(shí), 跳過多少比特
實(shí)戰(zhàn)例子:
1. 批量生成隨機(jī)名稱的測試文件
for i in {10..10} do dd if=/dev/zero of=junk.test$i bs="$RANDOM"K count=20 done
2. 備份和恢復(fù)
備份
dd if=abc.gz of=abc.gz.bak1 bs=1k count=10000 dd if=abc.gz of=abc.gz.bak2 bs=1k skip=10000 count=70000 dd if=abc.gz of=abc.gz.bak3 bs=1k skip=80000
恢復(fù)方法如下:
dd if=abc.gz.bak1 of=abc.gz dd if=abc.gz.bak2 of=abc.gz bs=1k seek=10000 dd if=abc.gz.bak3 of=abc.gz bs=1k seek=80000
3. 轉(zhuǎn)換大小寫
生成大寫:dd if=dd.txt of=my.log bs=1M count=1 conv=ucase
生成小寫:為了不懶惰,留給讀者試試
4. 拷貝自己
代碼如下:
file_subscript=copy
dd if=$0 of=$0.$file_subscript 2>/dev/null
5.要把一張軟盤的內(nèi)容拷貝到另一張軟盤上,利用/tmp作為臨時(shí)存儲(chǔ)區(qū)。把源盤插入驅(qū)動(dòng)器中,輸入下述命令:
$ dd if =/dev/fd0 of = /tmp/tmpfile
拷貝完成后,將源盤從驅(qū)動(dòng)器中取出,把目標(biāo)盤插入,輸入命令:
$ dd if = /tmp/tmpfile of =/dev/fd0
軟盤拷貝完成后,應(yīng)該將臨時(shí)文件刪除:
$ rm /tmp/tmpfile
6. 把net.i這個(gè)文件寫入軟盤中,并設(shè)定讀/寫緩沖區(qū)的數(shù)目。
(注意:軟盤中的內(nèi)容會(huì)被完全覆蓋掉)
$ dd if = net.i of = /dev/fd0 bs = 16384
7.將文件sfile拷貝到文件 dfile中。
$ dd if=sfile of=dfile
8.創(chuàng)建一個(gè)100M的空文件
dd if=/dev/zero of=hello.txt bs=100M count=1
=============================================
/dev/null,外號(hào)叫無底洞,你可以向它輸出任何數(shù)據(jù),它通吃,并且不會(huì)撐著!
/dev/zero,是一個(gè)輸入設(shè)備,你可你用它來初始化文件。
/dev/null------它是空設(shè)備,也稱為位桶(bit bucket)。任何寫入它的輸出都會(huì)被拋棄。如果不想讓消息以標(biāo)準(zhǔn)輸出顯示或?qū)懭胛募?,那么可以將消息重定向到位桶?br/>/dev/zero------該設(shè)備無窮盡地提供0,可以使用任何你需要的數(shù)目——設(shè)備提供的要多的多。他可以用于向設(shè)備或文件寫入字符串0。
$ dd if=/dev/zero of=./test.txt bs=1k count=1
$ ls -l
total 4
-rw-r--r-- 1 oracle dba 1024 Jul 15 16:56 test.txt
eg:
$ find / -name access_log 2>/dev/null
以上是“l(fā)inux中dd命令有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。