设为首页收藏本站

安徽论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10840|回复: 0

Linux dd命令详解:数据备份,并在备份过程中进行格式转换案例

[复制链接]

68

主题

0

回帖

216

积分

中级会员

Rank: 3Rank: 3

积分
216
发表于 2022-3-26 10:59:11 | 显示全部楼层 |阅读模式
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
dd 命令主要用来进行数据备份,并且可以在备份的过程中进行格式转换。其实 dd 命令可以把源数据复制成目标数据,而且不管源数据是文件、分区、磁盘还是光盘,都可以进行数据备份。
dd 命令的基本格式如下:
  1. [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】备份文件
  1. [root@localhost ~]# dd if=/etc/httpd/conf/httpd.conf of=/tmp/httpd.bak
  2. 记录了67+1 的读入
  3. #数据占了写满的67个数据块,以及1个没有写满的数据块
  4. 记录了67+1 的写出
  5. #默认数据块大小是512字节
  6. 34439字节(34 kB)已复制,0.0524897 秒,656 kB/秒
  7. #如果要备份文件,那么dd命令和cp命令非常类似
  8. [root@localhost ~]# ll -h /tmp/httpd.bak
  9. -rw-r--r--.1 root root 34K 6月 5 18:04 /tmp/httpd.bak
  10. #查看一下生成的备份文件的大小
复制代码
【例 2】备份分区为一个备份文件
  1. [root@localhost ~]# df -h
  2. 文件系统 容量 已用 可用 已用%% 挂载点
  3. /dev/sda3 20G 2.0G 17G 11% /
  4. tmpfs 306M 0 306M 0% /dev/shm
  5. /dev/sda1 194M 27M 157M 15% /boot
  6. /dev/sr0 3.5G 3.5G 0 100% /mnt/cdrom
  7. #查看一下分区容量,我们备份/boot分区
  8. [root@localhost ~]# dd if=/dev/sda1 of=/tmp/boot.bak
  9. #备份完成
  10. [root@localhost ~]# ll -h /tmp/boot.bak
  11. -rw-r--r--.1 root root 200M 6月 5 18:14 /tmp/boot.bak
  12. #查看生成的备份文件
  13. #如果需要恢复,则执行以下命令
  14. [root@localhost ~]# dd if=/tmp/boot.bak of=/dev/sda1
复制代码
如果想要把分区直接备份成另一个分区,就需要生成一个新的分区,这个分区的大小不能比源分区小,只能和源分区大小一致或比它大。命令如下:
  1. [root@localhost ~]# dd if=/dev/sda1 of=/dev/sdb1
  2. #如果需要恢复,则只需把输入项和输出项反过来即可,命令如下
  3. [root@localhost ~]# dd if=/dev/sdb1 of=/dev/sda1
复制代码
【例 3】整盘备份
  1. [root@localhost ~]# dd if=/dev/sda of=/dev/sdb
  2. #把磁盘a备份到磁盘b
  3. [root@localhost ~]# dd if=/dev/sda of=/tmp/disk.bak
  4. #把磁盘a备份成文件disk.bak
  5. #备份恢复
  6. #如果要备份到另一块硬盘上,那么,当源硬盘数据损坏时,只需用备份硬盘替换源硬盘即可
  7. #如果要备份成文件,那么在恢复时需要把备份数据复制到其他Linux中,然后把新硬盘安装到这台Linux
  8. #服务器上,再把磁盘备份数据复制到新硬盘中。命令如下
  9. [root@localhost ~]# dd if=/tmp/disk.bak of=/dev/sdb
复制代码
【例 4】复制软盘
  1. [root@localhost ~]# dd if=/dev/fd0 of=/tmp/fd.bak
  2. #在Linux中软盘的设备文件名是/dev/fd0
  3. #这条命令先把软盘中的数据保存为临时数据文件
  4. [root@localhost ~]# dd if=/tmp/fd.bak of=/dev/fd0
  5. #然后更换新的软盘,把数据备份复制到新软盘中,就实现了软盘的复制
复制代码
如果需要备份的是光盘,那么在 Linux 中就是使用 dd 命令制作光盘的 ISO 镜像的。命令如下:
  1. #制作光盘ISO镜像
  2. [root@localhost ~]# dd if=/dev/cdrom of-/tmp/cd.iso #把光盘中所有的数据制作成ISO镜像
  3. [root@localhost ~J # mkdir /mnt/cd
  4. #建立一个新的挂载点
  5. [root@localhost ~]# mount -o loop /tmp/cd.iso /mnt/cd #挂栽ISO文件到挂载点
  6. [root@localhost ~]# cd /mnt/cd
  7. #进入挂栽点
  8. [root@localhost cd]# ls
  9. CentOS_BuildTag images RELEASE-NOTES-en-tJS.html RPM-GPG-KEY-CentOS-Debug-6 TRANS.TBL
  10. EULA    isolinux repodata   RPM-GPG-KEY-CentOS-Security-6
  11. GPL Packages RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Testing-6
  12. #数据是光盘当中的数据,这个ISO镜像是可以被当作真正的光盘使用的
复制代码
我们有时需要制作指定大小的文件,比如,在增加 swap 分区时,就需要建立指定大小的文件,这时也使用 dd 命令。命令如下:
  1. [root@localhost ~]# dd if=/dev/zero of=/tmp/testfile bs=1M count=10
  2. #数据输入项是/dev/zero会向目标文件中不停地写入二进制的0
  3. #指定数据块大小是1MB
  4. #指定生成10个数据块。也就是定义输出的文件大小为10MB
  5. 记录了10+0 的读入
  6. #显示数据占满了10个数据块
  7. 记录了10+0 的写出
  8. #不过这里数据块的大小已经是1MB了
  9. 10485760字节(10 MB)已复制,0.00709902 秒,1.5 GB/秒
  10. [root@localhost ~]# ll -h /tmp/testfile
  11. -rw-r--r--.1 root root 10M 6月 5 18:46 /tmp/testfile
  12. #生成的testfile文件的大小刚好是10MB
复制代码
dd 命令在进行整盘复制时,类似于 GHOST 工具的功能,不过通过 dd 命令复制出来的硬盘数据要比 GHOST 复制出来的硬盘数据稳定得多。虽然 dd 命令功能强大,不过也有一个明显的缺点,就是复制的时间较长,复制 100GB 的数据需要 15~25 分钟(根据服务器的性能不同而不同)。
实现数据备份还有非常多的方法和工具,比如 tar 和 cpio 命令。至于网络复制工具,如 rsync 和 scp 等,需要较完善的网络知识才能够学习,这里不再介绍。
到此这篇关于Linux dd命令详解:数据备份,并在备份过程中进行格式转换案例的文章就介绍到这了,更多相关Linux dd命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
                                                                                               
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表