linux dd指令

【自取】最近整理的,有需要可以领取学习:

安装操作系统,速度太慢,整个过程太冗长乏味了。

在安装过程中,你需要回答一些问题,系统需要安装无数的软件,创建和写入无数的文件。因为涉及大量的文件定位和读写,速度一定不能太快。

[En]

During the installation process, you need to answer a number of questions, the system needs to install countless software, create and write countless files. Because it involves a large number of file positioning and reading and writing, the speed must not be fast.

Windows下我们常常使用ghost系统来备份和刻录操作系统。ghost可以clone整个系统的镜像,然后在新的电脑上恢复,相当简单。用ghost系统安装操作系统比使用安装光盘安装系统要快捷多了,也不需要回答任何问题了。

那么,我们能不能用ghost来备份和恢复Linux系统呢。

答案是不行。因为ghost只能识别很少的老旧Linux文件系统,也无法识别grub和LILO等引导加载程序。

其实,Linux下也有ghost工具,最著名的有g4l—ghostForLinux。

用了一下ghostForLinux。如果是整个磁盘的复制和恢复,还算简单。但是,我试了半天,也没办法实现对一个或者几个分区的恢复。

g4l,还是太弱了,无法满足我的要求!

深深的苦恼中,灵光乍现:神奇的ghost的原理是什么呢?不就是数据复制吗?Linux下的dd命令不就是最强大的数据复制工具!

既然如此,我为什么要使用g4l这样复杂的工具呢?一条dd命令不就可以帮我实现任意复杂的镜像复制和恢复的需求了吗?管他是grub,还是ext4,btrfs,FAT32,NTFS…dd面前众生平等。

进入Linux操作系统,打开命令行,执行如下命令:

sudo fdisk -u -l

可以查看所有磁盘上的所有分区的尺寸和布局情况。

-u,让start和end中数字的单位是512字节,也就是一个sector扇区的大小。

假设我有一个/dev/sda磁盘,有100GB大小。我安装了一个Ubuntu操作系统。使用了如下分区:

/dev/sda1 5GB

/dev/sda2 1GB 扩展分区

/dev/sda5 1GB 扩展分区

/dev/sda2是所有扩展分区,它的大小和/dev/sda5重合。

/dev/sda1是ext4格式的文件系统。用于安装ubuntu操作系统。

/dev/sda5是swap格式的文件系统,作为交换分区。

如果我用弱智的g4l工具制作系统的镜像,就需要备份整个磁盘100GB,而不是我需要的6GB。

g4l也可以单独备份分区,但是在恢复时,就需要在目标计算机上安装好grub,并进行了适当的分区。很麻烦!

我这里,可以使用一条dd命令就生成6GB的镜像。然后可以在任意硬盘大于6GB的计算机上恢复出完整的系统,包括MBR和3个分区sda1,sda2,sda5。

找一个U盘,安装UbuntuLive Cd系统。【具体如何制作U盘启动的UbuntuLive CD,可以参考Ubuntu官方网站的帮助。】

UbuntuLive Cd和WindowsPE系统类似,是光盘/U盘引导的Ubuntu操作系统,不需要安装就可以直接使用。

U盘启动,进入盘上的Ubuntu系统,打开命令行,执行:

sudo fdisk -u -l /dev/sda

查看硬件的分区情况。

然后执行:

dd bs=512 count=[fdisk 命令中最大的end数+1] if=/dev/sda of=/ghost.img

这样,就可以把我需要的分区数据全部copy到ghost.img文件中。镜像制作完成了!

然后,我们就可以把U盘插到其他系统上,用U盘启动,进入UbuntuLiveCD,打开命令行,执行如下命令:

dd if=/ghost.img of=/dev/sda

完成后,拔掉U盘,启动计算机,就可以看到我们的Linux系统已经安装完毕了!

注意:

不要直接在计算机上用本地磁盘启动系统后执行dd命令生成本地磁盘的镜像。而应该使用livecd启动计算机。

因此计算机运行时会对系统盘产生大量写操作。 直接对运行中的系统盘生成的镜像,在恢复到其他硬盘上时,很可能会无法启动!

在linux上用dd命令实现系统镜像备份和恢复,是不是很简单呢?

对于Windows系统,甚至Mac等等任意系统,其实都可以用dd命令实现系统镜像的备份和恢复。

因为,Linux的fdisk命令能够识别任意系统下的分区格式。fdisk并不关系分区上的文件系统,甚至有无文件系统都不关心。fdisk总是可以报告分区占用了哪些扇区。

dd命令也不关心磁盘的文件系统格式,它只是简单地按照要求从指定的位置,复制多少字节数据而已。

dd命令实现镜像备份和恢复,比Ghost软件简单和强大多了。使用ghost软件,依然需要用户进行复杂而危险的磁盘分区操作。

而使用fdisk和dd这两条命令,一切都免了!

可能我们需要备份的分区很大,使用dd命令生成的镜像文件也就很大。存储和传输这些镜像不太方便。 我们也可以使用压缩程序压缩生成的镜像文件。 这里,我选择使用gzip程序,配合dd命令一起使用。

gzip参数:

提醒:

如果你把镜像恢复到另一台计算机上,你可能会发现你的网卡是eth1,而不是eth0。这是因为

/etc/udev/rules.d/70-persistent-net.rules 文件把你做镜像的计算机的网卡作为eth0登记了。

如果你的网络脚本对eth0进行了处理,而没有对eth1进行处理,那么不修改网络脚本,你可能就无法上网了。

也许你会希望在做镜像之前,先删除 /etc/udev/rules.d/70-persistent-net.rules 文件。这样你恢复镜像时,网卡的名字就是eth0。 就不会造成你在恢复后的计算机上无法上网的问题了。

Original: https://www.cnblogs.com/vigarbuaa/p/3907855.html
Author: vigarbuaa
Title: linux dd指令

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10346/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 让 Shell 命令提示符显示 Git 分支名称

    在本地环境( iTerm2 + zsh) 使用终端工具操作 Git 时, 能够显示”当前文件夹名称”以及” Git 分支名称”(如下…

    Linux 2022年8月30日
    0250
  • LInux 分割合并文件

    有两种方式, 第一种使用dd命令 第二种使用split dd命令是linux下一个非常有用的磁盘命令。它可以将指定大小的块拷贝成一个文件,并在拷贝的同时执行指定的转换。UNIX已经…

    Linux 2022年8月20日
    0330
  • git分支策略和合并注意事项

    1.每个功能点都应该弄一个独立的分支,它是上线的最小单元【上线验收完毕可以删除】 2.如果dev提交了a和b,然后xx_dev基于dev的b开始提交m,然后合并到dev,然后dev…

    Linux 2022年8月30日
    0270
  • idea设置新增文件,自动添加到git

    作者:经典鸡翅 微信公众号:经典鸡翅 如果你想及时得到个人撰写文章,纯java的面试资料或者想看看个人推荐的技术资料,可以扫描左边二维码(或者长按识别二维码)关注个人公众号)。 O…

    Linux 2022年8月30日
    0380
  • 秒搞VirtualBox 、CentOS 的安装过程

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 一、介绍背景: VirtualBox : 由德国 InnoTek 软件公司出品 Open Source Software, OS…

    Linux 2022年9月10日
    0180
  • shell相关知识1

    组命令,就是将多个命令划分为一组,或者看成一个整体。 用法区别 Shell 组命令的写法有两种: { command1; command2;. . .; }(command1; c…

    Linux 2022年9月14日
    0240
  • Prometheus学习笔记(6)Alertmanager告警

    一、Alertmanager简介 二、Alertmanager部署 三、Alertmanager配置 四、自定义告警规则和发送 五、自定义告警模板 一、Alertmanager简介…

    Linux 2022年8月26日
    0380
  • Ubuntu 桌面死机后重启桌面方法

    1、在alt+ctrl+f1~F6中重启gdm服务: sudo /etc/init.d/gdm restart sudo /etc/init.d/gdm stopsudo /etc…

    Linux 2022年8月26日
    0320
  • ubuntu-终端下不显示 中文文字 的解决方法

    ubuntu安装的中文版时,进入tty模式时,中文不显示。 可以利用 zhcon包 来解决: 先修改配置文件中的语言改为中文UTF8 sudo vim /etc/default/l…

    Linux 2022年8月26日
    0250
  • Redis中使用redis-cli及密码登录

    使用redis-cli登录后如果Redis中设置了密码那么输入密码可能会出现: NOAUTH Authentication required的错。 这个时候可以输入:auth pa…

    Linux 2022年9月14日
    0170
  • docker容器中 -bash: yum: command not found 解决

    作者:沐雪这些文章都是作者原创或翻译的。如有错误,欢迎批评改正。这篇文章的版权属于作者和博客园。请注明是否需要重印。 [En] The articles are all origi…

    Linux 2022年8月30日
    0360
  • 红帽首席架构师:CentOS Stream 并非要革了 CentOS 的“命”

    自从红帽 宣布CentOS 将停止更新,并以全新的 CentOS Stream 彻底取而代之;开源社区有关红帽 这一举措的疑惑就层出不穷。对此,红帽首席架构师张家驹于近期进行了答疑…

    Linux 2022年8月11日
    0290
  • git 创建标签 tag

    1. git tag <name></name>就可以打一个新标签 加上-a参数来创建一个带备注的tag,备注信息由-m指定。如果你未传入-m则创建过程系统…

    Linux 2022年8月30日
    0220
  • Centos7.4下gitlab迁移及通过docker启动gitlab服务

    背景: 1)原有的gitlab服务器是通过yum install 进行安装,版本为12.9.9 2)新的gitlab服务器要求使用docker运行gitlab服务 3)需要旧的gi…

    Linux 2022年8月30日
    0260
  • Linux netstat命令详解

    最常用 netstat -ntl netstat -natp Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics…

    Linux 2022年8月24日
    0250
  • Linux之文件系统各种符号说明

    是用户的home目录所在地,这个分区的大小取决于有多少用户。如果是多用户共同使用一台电脑的话,这个分区是完全有必要的,况且根用户也可以很好地控制普通用户使用计算机,如对用户或者用户…

    Linux 2022年8月26日
    0240
  • 每天一个linux命令(8):scp使用

    不同的Linux之间copy文件常用有3种方法:1.使用ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy。…

    Linux 2022年8月26日
    0390
  • linux 连接跟踪 conntrack

    参考链接: 连接跟踪是Linux内核中引入的nf_conntrack 模块所实现的功能,同时支持IPv4 和 IPv6,取代只支持 IPv4 的 ip_connktrack,用于跟…

    Linux 2022年8月24日
    0250
  • docker Redis 安裝路徑

    /usr/local/etc posted @2022-01-14 17:35 刘大飞 阅读(15 ) 评论() 编辑 Original: https://www.cnblogs….

    Linux 2022年9月14日
    0300
  • 安装Redis

    1、下载redis 2、解压缩、安装 安装完之后,可以执行以下make test,执行make test之前需要先安装tcl 3、配置 redis服务后台启动 找到: 修改为: 4…

    Linux 2022年9月14日
    0290
  • ubuntu20系统使用kiauh安装klipper 让Robin nano v1.2继续发光(Klipper Installation And Update Helper 缩写Kiauh)

    ubuntu 用20吧,因为最新的也不一定合适,22没有py2;老的比如18也不合适,py太低,需要再去ubuntu18更新python教程才能用 另外安装ub之后,把自动锁定时间…

    2022年8月26日
    0310
  • docker 安装redis

    1: 搜索镜像, docker search redis2:&#xA0;<strong>docker pull redis:6.0.6</strong&g…

    Linux 2022年9月14日
    0180
  • Shell grep 命令扩展增强

    背景: 线上排查问题需要找出有某个特征的日志,并获取这些日志的完整调用日志链路。 比如, 通过某个tag 获取到了这些日志的 请求id 【Span ID】, 然后还需要再一步取得所…

    Linux 2022年9月14日
    0190
  • linux shell中”2>&1″含义

    在计划任务中经常可以看到。例如我们公司的计划任务举例: 对于& 1 更准确的说应该是文件描述符 1,而1标识标准输出,stdout。对于2 ,表示标准错误,stderr。2…

    Linux 2022年8月13日
    0280
  • jquery更改表格行顺序实例

    使用jquery写的更改表格行顺序的小功能 表格部分: 复制代码代码如下: js代码,其中会为要变更的行在变更顺序后加上class=danger 复制代码代码如下: 更改后可以按照…

    Linux 2022年8月20日
    0270
  • GO redis

    csharp;gutter:true; package main</p> <p>import ( "fmt" "github….

    Linux 2022年9月14日
    0220

发表回复

登录后才能评论
免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部