dd命令: convert and copy a file
用法:ddif=/PATH/FROM/SRCof=/PATH/TO/DEST
bs=#:blocksize,复制单元大小
count=#:复制多少个bs
of=file写到所命名的文件而不是到标准输出
if=file从所命名文件读取而不是从标准输入
bs=size指定块大小(既是ibs也是obs)
ibs=size一次读size个byte
obs=size一次写size个byte
cbs=size一次转化size个byte
skip=blocks从开头忽略blocks个ibs大小的块
seek=blocks从开头忽略blocks个obs大小的块
count=n只拷贝n个记录
用指定的参数转换文件:conv=conversion[,conversion...]
转换参数:ascii转换EBCDIC为ASCII
ebcdic转换ASCII为EBCDIC
block转换一行数据为长度为cbs的记录,不足部分用空格填充。
unblock替代cbs长度的每一行尾的空格为新行
lcase把大写字符转换为小写字符
ucase把小写字符转换为大写字符
nocreat不创建输出文件
noerror出错时不停止
notrunc不截断输出文件
sync把每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
备份:ddif=/dev/sdxof=/dev/sdy
将本地的/dev/sdx整盘备份到/dev/sdyddif=/dev/sdxof=/path/to/image
将/dev/sdx全盘数据备份到指定路径的image文件ddif=/dev/sdx|gzip>/path/to/image.gz
备份/dev/sdx全盘数据,并利用gzip工具进行压缩,保存到指定路径。
恢复:ddif=/path/to/imageof=/dev/sdx
将备份文件恢复到指定盘gzip-dc/path/to/image.gz|ddof=/dev/sdx
将压缩的备份文件恢复到指定盘。
拷贝内存资料到硬盘:ddif=/dev/memof=/root/mem.binbs=1024
将内存里的数据拷贝到root目录下的mem.bin文件。
从光盘拷贝iso镜像:ddif=/dev/cdromof=/root/cd.iso
拷贝光盘数据到root文件夹下,并保存为cd.iso文件。
销毁磁盘数据:ddif=/dev/urandomof=/dev/sda1
利用随机的数据填充硬盘,在某些必要的场合可以用来销毁数据。执行此操作以后,/dev/ sda1将无法挂载,创建和拷贝操作无法执行。
得到最恰当的block size:ddif=/dev/zerobs=1024count=1000000
of=/root/1Gb.file
ddif=/dev/zerobs=2048count=500000
of=/root/1Gb.file
ddif=/dev/zerobs=4096count=250000
of=/root/1Gb.file
通过比较dd指令输出中所显示的命令执行时间,即可确定系统最佳的block size大小:
测试硬盘读写速度:ddif=/dev/zeroof=/root/1Gb.filebs=1024count=1000000
ddif=/root/1Gb.filebs=64k|ddof=/dev/null
通过上两个命令输出的执行时间,可以计算出测试硬盘的写/读/速度。
修复硬盘:ddif=/dev/sdaof=/dev/sda
当硬盘较长时间(比如1,2年)放置不使用后,磁盘上会产生消磁点。当磁头读到这些区域时会遇到困难,并可能导致I/O错误。当这种情况影响到硬盘的第一个扇区时,可能导致硬盘报废。上边的命令有可能使这些数据起死回生,且这个过程是安全高效的。
示例:
1.备份MBR:[root@anonymous~]#ddif=/dev/sda1of=/tmp/mbr.bakbs=512
count=11+0recordsin
1+0recordsout
512bytes(512B)copied,0.000160395s,3.2MB/s
2.有一个大于2K的二进制文件fileA。现在想从第64个字节位置开始读取,需要读取的大小是128Byts。又有fileB, 想把上面读取到的128Bytes写到第32个字节开始的位置,替换128Bytes,请问如何实现?[root@anonymous~]#ddif=fileAof=fileBbs=1count=128skip=63seek=31conv=notrunc
128+0recordsin
128+0recordsout
128bytes(128B)copied,0.000421017s,304kB/s
3.创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后自动挂载至/test目录,且默认有acl挂载选项
[root@anonymous~]#ddif=/dev/zeroof=testbs=1Mcount=2048
2048+0recordsin
2048+0recordsout
2147483648bytes(2.1GB)copied,121.521s,17.7MB/s
[root@anonymous~]#mkfs.ext4-b2048-L'TEST'-m1test
mke2fs1.41.12(17-May-)
testisnotablockspecialdevice.
Proceedanyway?(y,n)y
Filesystemlabel=TEST
OStype:Linux
Blocksize=2048(log=1)
Fragmentsize=2048(log=1)
Stride=0blocks,Stripewidth=0blocks
131072inodes,1048576blocks
10485blocks(1.00%)reservedforthesuperuser
Firstdatablock=0
Maximumfilesystemblocks=537919488
64blockgroups
16384blockspergroup,16384fragmentspergroup
2048inodespergroup
Superblockbackupsstoredonblocks:
16384,49152,81920,114688,147456,409600,442368,802816
Writinginodetables:done
Creatingjournal(32768blocks):done
Writingsuperblocksandfilesystemaccountinginformation:done
Thisfilesystemwillbeautomaticallycheckedevery35mountsor
180days,whichevercomesfirst.Usetune2fs-cor-itooverride.
[root@anonymous~]#tune2fs-oacltest
tune2fs1.41.12(17-May-)
[root@anonymous~]#echo'/root/test/mnt/testext4defaults00'>>/etc/fstab
[root@anonymous~]#echo'/root/test/mnt/testext4defaults,loop00'>>/etc/fstab
[root@anonymous~]#mount-a