Linux中dd命令使用实例教程
本文主要给大家介绍了关于Linux中dd命令使用的相关内容,分享出来供大家参考学习,下面来看看详细的介绍:
一、Linuxdd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
使用方法:dd[OPERAND]
参数注释:
bs=BYTESreadandwriteBYTESbytesatatime(alsoseeibs=,obs=) cbs=BYTESconvertBYTESbytesatatime conv=CONVSconvertthefileasperthecommaseparatedsymbollist count=NcopyonlyNinputblocks ibs=BYTESreadBYTESbytesatatime(default:512) if=FILEreadfromFILEinsteadofstdin(默认为标准输入) iflag=FLAGSreadasperthecommaseparatedsymbollist obs=BYTESwriteBYTESbytesatatime(default:512) of=FILEwritetoFILEinsteadofstdout(默认为标准输出) oflag=FLAGSwriteasperthecommaseparatedsymbollist seek=BLOCKSskipBLOCKSobs-sizedblocksatstartofoutput skip=BLOCKSskipBLOCKSibs-sizedblocksatstartofinput status=WHICHWHICHinfotosuppressoutputtingtostderr; 'noxfer'suppressestransferstats,'none'suppressesall
CONVS的可选参数
asciifromEBCDICtoASCII ebcdicfromASCIItoEBCDIC ibmfromASCIItoalternateEBCDIC blockpadnewline-terminatedrecordswithspacestocbs-size unblockreplacetrailingspacesincbs-sizerecordswithnewline lcasechangeuppercasetolowercase nocreatdonotcreatetheoutputfile exclfailiftheoutputfilealreadyexists notruncdonottruncatetheoutputfile ucasechangelowercasetouppercase sparsetrytoseekratherthanwritetheoutputforNULinputblocks swabswapeverypairofinputbytes noerrorcontinueafterreaderrors syncpadeveryinputblockwithNULstoibs-size;whenused withblockorunblock,padwithspacesratherthanNULs fdatasyncphysicallywriteoutputfiledatabeforefinishing fsynclikewise,butalsowritemetadata
FLAGS的可选参数
appendappendmode(makessenseonlyforoutput;conv=notruncsuggested) directusedirectI/Ofordata directoryfailunlessadirectory dsyncusesynchronizedI/Ofordata synclikewise,butalsoformetadata fullblockaccumulatefullblocksofinput(iflagonly) nonblockusenon-blockingI/O noatimedonotupdateaccesstime nocttydonotassigncontrollingterminalfromfile nofollowdonotfollowsymlinks count_bytestreat'count=N'asabytecount(iflagonly)
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:
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,andsoonforT,P,E,Z,Y
二、使用实例
1、将本地的/dev/hdb整盘备份到/dev/hdd
ddif=/dev/hdbof=/dev/hdd
2、将/dev/hdb全盘数据备份到指定路径的image文件
ddif=/dev/hdbof=/root/image
3、备份/dev/hdb全盘数据,并利用gzip工具进行压缩,保存到指定路径
ddif=/dev/hdb|gzip>/root/image.gz
4、把一个文件拆分为3个文件
#文件大小为2.3k [Oracle@rhel6~]$lldb1_db_links.sql -rw-r--r--1oracleoinstall2344Nov2110:39db1_db_links.sql #把这个文件拆成每个文件1k,bs=1k,count=1,使用skip参数指定在输入文件中跳过多少个bs支读取 [oracle@rhel6~]$ddif=db1_db_links.sqlof=dd01.sqlbs=1kcount=1 1+0recordsin 1+0recordsout 1024bytes(1.0kB)copied,4.5536e-05s,22.5MB/s [oracle@rhel6~]$ddif=db1_db_links.sqlof=dd02.sqlbs=1kcount=1skip=1 1+0recordsin 1+0recordsout 1024bytes(1.0kB)copied,0.000146387s,7.0MB/s [oracle@rhel6~]$ddif=db1_db_links.sqlof=dd03.sqlbs=1kcount=1skip=2 0+1recordsin 0+1recordsout 296bytes(296B)copied,0.000204216s,1.4MB/s #拆分出的文件 [oracle@rhel6~]$lldd*sql -rw-r--r--1oracleoinstall1024May2014:58dd01.sql -rw-r--r--1oracleoinstall1024May2014:58dd02.sql -rw-r--r--1oracleoinstall296May2014:58dd03.sql
5、把拆分出的文件合并为1个
#合并操作,此时用到seek参数,用于指定在输入文件中跳过的bs数 [oracle@rhel6~]$ddof=1.sqlif=dd01.sql 2+0recordsin 2+0recordsout 1024bytes(1.0kB)copied,0.000176s,5.8MB/s [oracle@rhel6~]$ddof=1.sqlif=dd02.sqlbs=1kseek=1 1+0recordsin 1+0recordsout 1024bytes(1.0kB)copied,0.000124038s,8.3MB/s [oracle@rhel6~]$ddof=1.sqlif=dd03.sqlbs=1kseek=2 0+1recordsin 0+1recordsout 296bytes(296B)copied,0.00203881s,145kB/s #与拆分前的文件进行校验 [oracle@rhel6~]$diff1.sqldb1_db_links.sql [oracle@rhel6~]$
6、在输出文件中指定的位置插入数据,而不截断输出文件
需要使用conv=notrunc参数
[oracle@rhel6~]$ddif=2.sqlof=1.sqlbs=1kseek=1count=2conv=notrunc
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。