[20140702]linux使用dd的一些細節.txt

lfree發表於2014-07-02

[20140702]linux使用dd的一些細節.txt

linux下使用dd要注意的一個重要細節是輸入,輸出不要寫錯或者寫反,否者後果很嚴重.
另外假設要修改某個檔案的中間部分,有一個細節要特別注意,否者會導致檔案破壞.
舉一個簡單的例子來說明:

# cat a1.txt
111111111
222222222
333333333

--建立一個檔案每行10個字元(看到9個字元+加上\n正好10個字元.)

# dd if=a1.txt of=a2.txt bs=10 skip=1 count=1
1+0 records in
1+0 records out

# cat a2.txt
222222222

--這樣正好取出中間部分.假設修改最後一個字元為b.

# cat a2.txt
22222222b

--現在替換回去.
# dd if=a2.txt of=a1.txt bs=10 count=1 seek=1
1+0 records in
1+0 records out

# cat a1.txt
111111111
22222222b

# ls -l a1.txt
-rw-r--r--  1 root root 20 2014-07-02 16:19:46 a1.txt

--可以發現結尾部分丟失,檔案大小改變.正確的做法是:

# dd if=a2.txt of=a1.txt bs=10 count=1 seek=1 conv=notrunc
1+0 records in
1+0 records out

--後面的引數conv=notrunc很重要! notrunc=>do not truncate the output file

# cat a1.txt
111111111
22222222b
333333333

--可以發現這樣修改後,結果才正確,僅以此文做為自己犯的一個嚴重錯誤的紀念.連結:

http://blog.itpub.net/267265/viewspace-762523/

--再次補充一個,測試操作一定要小心!!!!!!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1204908/,如需轉載,請註明出處,否則將追究法律責任。

相關文章