Linux下如何克隆磁盘/分区命令dd入门
折腾服务器或者是专业的服务器运维都会遇到迁移数据或磁盘的情况。Linux下就提供了非常简单且强大的dd
命令,它可以拯救即将损坏磁盘的数据、远程备份或者进行完整的分区拷贝。
岩兔站整理了一下dd
命令的简单用法,与大家分享一下。
为什么使用dd
如果是复制或备份数据,可以使用tar
或者scp
命令,但是通常的文件复制仅限于在多台正常运行的linux系统之内。使用dd
命令,可以做到字节对字节的复制,所以在正式开始操作之前,一定要注意拼写,因为一条错误的语句很可能会将整个系统毁掉。
注意:如果命令中包含dd
,在执行之前一定要再次确认每一个字母,避免拼写出错。
基础语法
下面可以开始简单的试用一下dd
命令。
复制磁盘
比如你想将磁盘/dev/sda
完整的复制,首先需要准备一个新的磁盘空间,如:/dev/sdb
。使用dd
命令时需要包含if=
表示源磁盘,和of=
表示目标磁盘。所以命令如下:
# dd if=/dev/sda of=/dev/sdb
创建img镜像
将分区创建为镜像,并存储于/home
目录下
# dd if=/dev/sda of=/home/sdadisk.img
创建分区镜像
上述都是复制整个磁盘,如果只想复制某个分区,如:/dev/sda2
,也是完全没问题。
同时可以使用bs
参数,规定一次拷贝的字节数,如:bs=4096
。合理使用bs
参数可以优化dd
执行速度,bs
的合理范围要参考本机的性能进行具体设置。
# dd if=/dev/sda2 of=/home/partition2.img bs=4096
还原镜像
还原镜像也很简单,原理与创建镜像相同,只需颠倒if=
和of=
两个参数的内容即可,如:
dd if=sdadisk.img of=/dev/sdb
异地备份
可以通过与SSH
命令组合,进行异地服务器磁盘的备份。如将远端服务器1.2.3.4的磁盘/dev/sda
备份至本地bakup.gz
# ssh username@1.2.3.4 "dd if=/dev/sda | gzip -1 -" | dd of=backup.gz
成功备份的磁盘要注意测试。如果是可引导磁盘可将其还原至新计算机,尝试是否能正常启用。如果是普通数据盘,挂载后能正常读取。
覆写磁盘
更换磁盘时,如果原磁盘包含有敏感数据,处理起来就要小心了,因为所有删除甚至格式化的内容都有可能使用技术手段进行还原。
有人说最妥善最简单的方法是用锤子抹盘。但这样做未免有点太浪费了,使用dd
命令即可完全抹盘。
使用0填充整个硬盘:
# dd if=/dev/zero of=/dev/sda1
或者,使用随机数填充整个硬盘,效果更佳:
# dd if=/dev/urandom of=/dev/sda1
监视进程
根据磁盘大小,dd运行过程可能会耗时很长,如果想要在执行过程中查看进度,需要使用pv
工具。
首先安装pv
工具
Ubuntu/debian
# sudo apt install pv
或CentOS
# sudo yum install pv
然后运行dd
命令,效果如下
# dd if=/dev/urandom | pv | dd of=/dev/sda1
4,14MB 0:00:05 [ 98kB/s] [ ? ? ?<= ? ? ? ? ? ? ? ? ?]
- MVC发布后项目存在于根目录中的子目录中时的css与js、图片路径问题
- ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
- View与Control间的数据交互
- C#中Dispose和Close的区别!
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- ASP.Net MVC框架配置与分析
- MVC利用MvcHtmlString在后台生成HTML
- ExtJs学习笔记(7)_获取GridPanel选中行的详细信息
- ExtJs学习笔记(5)_Ajax示例
- shell脚本之特殊符号总结性梳理
- Centos6.X 下安装并使用VNC的操作记录
- Linux系统是否被植入木马的排查流程梳理
- 添加php的memcached扩展模块
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法