dd 命令主要用來進行數(shù)據(jù)備份,并且可以在備份的過程中進行格式轉(zhuǎn)換。其實 dd 命令可以把源數(shù)據(jù)復(fù)制成目標數(shù)據(jù),而且不管源數(shù)據(jù)是文件、分區(qū)、磁盤還是光盤,都可以進行數(shù)據(jù)備份。
dd 命令的基本格式如下:
[root@localhost ~]# dd if="輸入文件" of="輸出文件" bs="數(shù)據(jù)塊" count="數(shù)量"
參數(shù):
if:定義輸入數(shù)據(jù)的文件,也可以是輸入設(shè)備;
of:定義輸出數(shù)據(jù)的文件,也可以是輸出設(shè)備;
bs:指定數(shù)據(jù)塊的大小,也就是定義一次性讀取或?qū)懭攵嗌僮止?jié)。模式數(shù)據(jù)塊大小是 512 字節(jié);
count:指定 bs 的數(shù)量;
conv=標志:依據(jù)標志轉(zhuǎn)換文件。標志有以下這些:
【例 1】備份文件
[root@localhost ~]# cat /etc/ntp.conf |awk '{if($0 。[root@localhost ~]#vim/etc/httpd/conf/httpd.conf。[root@test~]#vi/etc/httpd/conf/httpd.conf。
記錄了67+1 的讀入
#數(shù)據(jù)占了寫滿的67個數(shù)據(jù)塊,以及1個沒有寫滿的數(shù)據(jù)塊
記錄了67+1 的寫出
#默認數(shù)據(jù)塊大小是512字節(jié)
34439字節(jié)(34 kB)已復(fù)制,0.0524897 秒,656 kB/秒
#如果要備份文件,那么dd命令和cp命令非常類似
[root@localhost ~]# ll -h /tmp/httpd.bak
-rw-r--r--.1 root root 34K 6月 5 18:04 /tmp/httpd.bak
#查看一下生成的備份文件的大小
【例 2】備份分區(qū)為一個備份文件
[root@localhost ~]# df -h
文件系統(tǒng) 容量 已用 可用 已用%% 掛載點
/dev/sda3 20G 2.0G 17G 11% /
tmpfs 306M 0 306M 0% /dev/shm
/dev/sda1 194M 27M 157M 15% /boot
/dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom
#查看一下分區(qū)容量linux命令,我們備份/boot分區(qū)
dd if=/dev/sda1 of=/tmp/boot.iso。root@dd-wrt:~# dd if=/dev/mtd1 of=linux.bin。dd if=/tmp/k3_v10.bin of=/dev/mtdblock6 && reboot。
#備份完成
[root@localhost ~]# ll -h /tmp/boot.bak
-rw-r--r--.1 root root 200M 6月 5 18:14 /tmp/boot.bak
#查看生成的備份文件
#如果需要恢復(fù),則執(zhí)行以下命令
[root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1
如果想要把分區(qū)直接備份成另一個分區(qū),就需要生成一個新的分區(qū),這個分區(qū)的大小不能比源分區(qū)小,只能和源分區(qū)大小一致或比它大。命令如下:
[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1
#如果需要恢復(fù),則只需把輸入項和輸出項反過來即可,命令如下
[root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1
【例 3】整盤備份
[root@localhost ~]# dd if=/dev/sda of=/dev/sdb
#把磁盤a備份到磁盤b
[root@localhost ~]# dd if=/dev/sda of=/tmp/disk.bak