Linux中在不破坏磁盘的情况下使用dd命令
作者:David Clinton 发布时间:2023-08-06 15:43:28
无论你试图从即将坏掉的存储驱动器抢救数据,将归档备份到远程存储,还是在别处对活动分区制作一份完美副本,都要知道如何安全可靠地复制驱动器和文件系统。幸好,有dd这款简单而强大的镜像复制工具,而且历史悠久。在这方面没有比它更出色的工具了。
dd命令的解释
dd:用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。
注意:指定数字的地方若以下列字符结尾,则乘以相应的数字:b=512;c=1;k=1024;w=2
参数注释:
1. if=文件名:输入文件名,缺省为标准输入。即指定源文件。< if=input file >
2. of=文件名:输出文件名,缺省为标准输出。即指定目的文件。< of=output file >
3. ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。
4. cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
5. skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
6. seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
注意:通常只用当输出文件是磁盘或磁带时才有效,即备份到磁盘或磁带时才有效。
7. count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
8. conv=conversion:用指定的参数转换文件。
ascii:转换ebcdic为ascii
ebcdic:转换ascii为ebcdic
ibm:转换ascii为alternate ebcdic
block:把每一行转换为长度为cbs,不足部分用空格填充
unblock:使每一行的长度都为cbs,不足部分用空格填充
lcase:把大写字符转换为小写字符
ucase:把小写字符转换为大写字符
swab:交换输入的每对字节
noerror:出错时不停止
notrunc:不截短输出文件
sync:将每个输入块填充到ibs个字节,不足部分用空(NUL)字符补齐。
为驱动器和分区制作完美副本
如果你研究足够深入,可以用dd执行各种任务,但它最出色的功能就是让你可以玩转分区。当然,可以使用tar甚至scp来复制整个文件系统,办法就是从一台计算机复制文件,然后将它们原封不动地粘贴到另一台计算机上新安装的Linux。但是,由于那些文件系统归档不是完整的镜像,它们需要在两头都运行主机操作系统作为基础。
另一方面,使用dd可以为几乎任何数字化内容制作逐字节对应的完美镜像。但是在你开始将分区从一个地方复制到另一个地方,有必要提一下:“dd代表磁盘破坏者”这句盛传于Unix管理员当中的老话有一定道理。即使在dd命令中输错哪怕一个字符,都会立即永久地清除整个驱动器的宝贵数据。是的,确保输入无误很重要。
切记:在按下回车键调用dd之前,务必要考虑清楚!
dd的基本操作
我们已对你作了必要的警告,先从简单的方面开始入手。假设你想为被指定为/dev/sda的整个磁盘的数据创建一个精确镜像。你已插入了空的驱动器(理想情况下容量与/dev/sda系统一样大)。语法很简单:if =定义源驱动器,of =定义保存数据的文件或位置:
# dd if=/dev/sda of=/dev/sdb
下一个例子将创建/dev/sda驱动器的.img归档,将其保存到用户帐户的主目录中:
# dd if=/dev/sda of=/home/username/sdadisk.img
那些命令创建了整个驱动器的镜像。你还可以专注于驱动器中的单个分区。下一个例子执行该操作,还使用bs设置一次复制的字节数(本例中是4096个字节)。调整bs值可能会影响dd操作的整体速度,但理想的设置将取决于你的硬件配置文件及其他考量因素。
# dd if=/dev/sda2 of=/home/username/partition2.img bs=4096
恢复起来很简单:实际上只要将if的值和of的值反过来。在本文中,if=对应你想要恢复的镜像,of=对应你想要写入镜像的目标驱动器:
# dd if=sdadisk.img of=/dev/sdb
还可以在一个命令中同时执行创建操作和复制操作。比如说,该例子将使用SSH创建远程驱动器的压缩镜像,并将生成的归档保存到本地计算机:
# ssh username@54.98.132.10 "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
你应该始终测试归档,确认它们是否正常可用。如果它是你创建的启动驱动器,将它插入到计算机,看看是否正常启动。如果它是普通的数据分区,挂载它以确保文件存在且可以正常访问。
用dd擦除磁盘
多年前,我有个朋友为其政府负责海外大使馆的安保工作。他曾告诉我,他监管的每个大使馆都配有政府发放的一把锤子。为什么?万一大使馆遇到什么危险,可以使用这把锤子砸烂所有硬盘。
那为什么不删除数据呢?你不是在开玩笑吧?众所周知,从存储设备删除含有敏感数据的文件实际上删除不了数据。如果时间够充裕、动机够强烈,可以从几乎任何数字介质找回几乎任何数据,那些被砸得稀巴烂的数字介质除外。
然而,你可以使用dd让不法分子极难搞到你的旧数据。这个命令将花一些时间在/dev/sda1分区的每个角落上创建数百万个0:
# dd if=/dev/zero of=/dev/sda1
但它可以变得更好。使用/dev/urandom文件作为来源,你可以使用随机字符写入到磁盘:
# dd if=/dev/urandom of=/dev/sda1
监控dd操作
由于磁盘或分区归档可能要花很长时间,你可能需要为命令添加进度监控工具。安装Pipe Viewer(Ubuntu上执行sudo apt install pv),并将其插入到dd。使用pv,最后一个命令看起来像这样:
# dd if=/dev/urandom | pv | dd of=/dev/sda1
4,14MB 0:00:05 [ 98kB/s] [ <=> ]
厌烦了备份和磁盘管理?有了dd,你不会有太多的借口。它用起来其实不难,不过要小心。祝你好运!
来源:https://opensource.com/article/18/7/how-use-dd-linux


猜你喜欢
- a)准备工作和建立内容在你注册域名之前,你就应该记录下你的想法,应该准备足够100个网页的内容。请注意是至少。这100个网页应该是真正的内容
- 三、“www.bbc.com”的设置1、新建一个Web站点:选“wy&r
- 拒绝游泳的鱼:各位安徽及各地的互联网朋友们,大家下午好。老k一直在做非常公益的这些本地站长的交流,所以鱼特别支持来和大家聊一下。其实很多的技
- 1、自己点击站上广告,此行为被誉为“无效点击”。Google政策原文:“我们不容许您因任何原因点击自己网站上的广告,因为这样可能会让广告客户
- 去官网下载最新版本的ant解压下载下来的.tar.gz文件: tar zxvf ....tar.gz将解压出来的文件移动到/opt/下:su
- 网页上通常会有数以百计的词语,那么搜索引擎怎样去分辨哪些是描述你的网站的重要的词语呢?搜索引擎会统计你一个页面的字数。那些重复出现的词或短语
- 工业和信息化部部长李毅中近日在“2009中国互联网大会”开幕仪式上指出,电子商务虽受金融危机影响但发展仍然迅速,2008年电子商务交易额突破
- 首先,在这里感谢军哥和LEB博主,这个一键包主要借鉴的就是这两位高手的脚本。其中前端后端配置是军哥的,脚本的主要结构是LEB的。请向上面两位
- 北京时间11月13日消息,据国外媒体报道,微软在英国取消了其搜索引擎Bing的beta测试版标签,同时还发布了Bing地图英国版,用户在访问
- 笔者是某单位大楼的一名网络管理员,平时主要任务就是维护大楼局域网网络的安全、稳定运行。最近一段时间,隔三差五的,大楼局域网网络总会发生一些故
- linux更改目录显示颜色实例详解用shell列举目录的时候,文件夹都是蓝色的,背景是黑色,使得无法看清蓝色的文件名称,看起来很痛苦。这个已
- 有人问到“国内以产品为王的公司有哪些?”此问题放大来谈,就是说以产品为核心竞争力的互联网有公司有哪些?问题很尖锐,因为目前以产品为核心竞争力
- 很多站长经常会向我们询问:“主题推广如何为站点匹配出相关度高的推广信息?”基于这个问题,我们将为大家
- 任何工作都有轻重缓急之分,很多职场人士都奉行轻重缓急,并把它作为提高工作效率的重要准则。只有分清哪些是最重要的并把它做好,工作才会变得井井有
- 1. 输入命令:cd /media2. 输入命令:sh VBoxLinuxAdditions.run3. 可能会出现错误:解决的办法是依次输
- 刘星星利用网络系统漏洞,盗用别人的网银账号大肆购物,金额高达10万余元。记者昨天获悉,刘星星因涉嫌诈骗罪被公诉至朝阳法院。刘星星中专毕业后来
- 目前做网站写独立博客,空间流量小是个挺头疼的问题,PNG比GIF色数高,但也没多少人敢用,如果你的空间只有几个GB的月流量那连GIF也得悠着
- 不说话的站长租一间房子,拉一条网线,借钱买一台电脑,很多个人站长就这样开始了自己的站长生涯。站长是没有早晨的,当早市上人潮汹涌的时候,他们才
- 一抬头,又是窗外朦朦,不知多少人家,此时梦中。多少草根站长,此时挑灯夜战。回首间,已埋在Admin5近两年。虽然钱赚的不多,但是阅历增加无数
- WordPress 3.3的beta 1 已经发布了,我们可以在这个版本中窥见一些最终版本的样子,这个版本还是发生了不小的变化。先找出一些明