Linux dd令详解:数据备份,并在备份过程中进行格式转换
dd 令的基本格式如下:
[root@localhost ~]# dd if="输入文件" of="输出文件" bs="数据块" count="数量"
参数:
if:定义输入数据的文件,也可以是输入设备;
of:定义输出数据的文件,也可以是输出设备;
bs:指定数据块的大小,也就是定义一次性读取或写入多少字节。模式数据块大小是 512 字节;
count:指定 bs 的数量;
conv=标志:依据标志转换文件。标志有以下这些:
ascii:由 EBCDIC 码转换 ASCII 码;
ebcdic:由 ASCII 码转换 EBCDIC 码;
ibm:由 ASCII 码转换替换的 EBCDIC 码;
block:将结束字符块里的换行替换成等长的空格;
unblock:将 cbs 大小的块中尾部的空格替换为一个换行符;
lcase:将大写字符转换为小写;
notrunc:不截断输出文件;
ucase:将小写字符转换为大写;
swab:交换每一对输入数据字节;
noerror:读取数据发生错误后仍然继续;
sync:将每个输入数据块以 NUL 字符填满 ibs 的大小;当配 block 或 unblock 时,会以空格代替 NUL 字符填充;
【例 1】备份文件
[root@localhost ~]# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak
记录了67+1 的读入
#数据占了写满的67个数据块,以及1个没有写满的数据块
记录了67+1 的写出
#默认数据块大小是512字节
34439字节(34 kB)已,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】备份分区为一个备份文件
[root@localhost ~]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/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
#查看一下分区容量,我们备份/boot分区
[root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.bak
#备份完成
[root@localhost ~]# ll -h /tmp/boot.bak
-rw-r--r--.1 root root 200M 6月 5 18:14 /tmp/boot.bak
#查看生成的备份文件
#如果需要恢复,则执行以下令
[root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1
如果想要把分区直接备份成另一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区大小一致或比它大。令如下:
[root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1
#如果需要恢复,则只需把输入项和输出项反过来即可,令如下
[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
#把磁盘a备份成文件disk.bak
#备份恢复
#如果要备份到另一块硬盘上,那么,当源硬盘数据损坏时,只需用备份硬盘替换源硬盘即可
#如果要备份成文件,那么在恢复时需要把备份数据到其他Linux中,然后把新硬盘安装到这台Linux
#服务器上,再把磁盘备份数据到新硬盘中。令如下
[root@localhost ~]# dd if=/tmp/disk.bak of=/dev/sdb
【例 4】软盘
[root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak
#在Linux中软盘的设备文件名是/dev/fd0
#这条令先把软盘中的数据保存为临时数据文件
[root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0
#然后更换新的软盘,把数据备份到新软盘中,就实现了软盘的
如果需要备份的是光盘,那么在 Linux 中就是使用 dd 令制作光盘的 ISO 镜像的。令如下:
#制作光盘ISO镜像
[root@localhost ~]# dd if=/dev/cdrom of-/tmp/cd.iso #把光盘中所有的数据制作成ISO镜像
[root@localhost ~J # mkdir /mnt/cd
#建立一个新的挂载点
[root@localhost ~]# mount -o loop /tmp/cd.iso /mnt/cd #挂栽ISO文件到挂载点
[root@localhost ~]# cd /mnt/cd
#进入挂栽点
[root@localhost cd]# ls
CentOS_BuildTag images RELEASE-NOTES-en-tJS.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL
EULA isolinux repodata RPM-GPG-KEY-CentOS-Security-6
GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
#数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的
我们有时需要制作指定大小的文件,比如,在增加 swap 分区时,就需要建立指定大小的文件,这时也使用 dd 令。令如下:
[root@localhost ~]# dd if=/dev/zero of=/tmp/testfile bs=1M count=10
#数据输入项是/dev/zero会向目标文件中不停地写入二进制的0
#指定数据块大小是1MB
#指定生成10个数据块。也就是定义输出的文件大小为10MB
记录了10+0 的读入
#显示数据占满了10个数据块
记录了10+0 的写出
#不过这里数据块的大小已经是1MB了
10485760字节(10 MB)已,0.00709902 秒,1.5 GB/秒
[root@localhost ~]# ll -h /tmp/testfile
-rw-r--r--.1 root root 10M 6月 5 18:46 /tmp/testfile
#生成的testfile文件的大小刚好是10MB
dd 令在进行整盘时,类似于 GHOST 工具的功能,不过通过 dd 令出来的硬盘数据要比 GHOST 出来的硬盘数据稳定得多。虽然 dd 令功能强大,不过也有一个明显的缺点,就是的时间较长, 100GB 的数据需要 15~25 分钟(根据服务器的性能不同而不同)。
实现数据备份还有非常多的方法和工具,比如 tar 和 cpio 令。于网络工具,如 rsync 和 scp 等,需要较完善的网络知识才能够学习,这里不再介绍。
- 随机文章
- 风儿(风儿轻轻的吹)
- 饿了么红包怎么用(饿了么红包怎么用微信支付)
- 光遇花手先祖位置(安卓光遇手花先祖)
- 广州4a广告公司(广州4a广告公司创意总监年薪)
- 抖音卡(抖音卡顿怎么解决)
- xboxones(xboxone手柄怎么配对主机)
- 兵马俑(兵马俑介绍和历史背景)
- 海猫鸣泣之时游戏(海猫鸣泣之时游戏在哪玩)
- 韩国媳妇和小雪(韩国媳妇和小雪的父亲工资是多少)
- 鬼泣5攻略(鬼泣5攻略第三关怎么跳)
- 地球日主题(2020年世界地球日主题)
- 和柳亚子(和柳亚子先生于田)
- 冰客(冰客果汁)
- yy魔兽(yy魔兽世界)
- 国外成人游戏(国外成人游戏注册需要visa信用卡)
- 充值卡代理(充值卡代理加盟)
- 拆奶罩
- 郭妮小说(恶魔的法则郭妮小说)
- 东天目山(东天目山景区)
- 杭同(杭同培训中心怎么样)
- 蝙蝠给人类的一封信(蝙蝠给人类的一封信)
- 大松电饭煲(美的大松电饭煲)
- 服饰加盟(服饰加盟店招商)
- 疯狂填字(疯狂填字5)
- 点对点短信息(点对点短信息费是什么意思)
- 观音普门品(观音普门品念诵全文)
- 河北省大运会(河北省大运会时间)
- 哈利波特官网(哈利波特官网在哪里)
- 骇客神条(骇客神条怎么辨别真假)
- 杜星霖(杜星霖图片)
