在linux上用dd命令实现ghost功能 -- 神奇的fdisk和dd命令

2023-05-16

神奇的fdisk和dd命令
        深深的苦恼中,灵光乍现:神奇的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操作系统
       在linux上用dd命令实现系统镜像备份和恢复,是不是很简单呢?


       对于Windows系统,甚至Mac等等任意系统,其实都可以用dd命令实现系统镜像的备份和恢复。
       因为,Linux的fdisk命令能够识别任意系统下的分区格式。fdisk并不关系分区上的文件系统,甚至有无文件系统都不关心。fdisk总是可以报告分区占用了哪些扇区。
 dd命令也不关心磁盘的文件系统格式,它只是简单地按照要求从指定的位置,复制多少字节数据而已。
      dd命令实现镜像备份和恢复,比Ghost软件简单和强大多了。使用ghost软件,依然需要用户进行复杂而危险的磁盘分区操作。
      而使用fdisk和dd这两条命令,一切都免了!


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


gzip参数:
-c 表示输出到stdout
-d  表示解压缩
-1 表示最快压缩
-9 表示最好压缩
默认使用的是-6压缩级别。


      
   
要使用 dd 和 gzip 生成压缩的镜像文件,可以执行命令: #   dd   bs=512
count=[fdisk命令中最大的end数+1] if=/dev/sda | gzip -6 > /ghost.img.gz


还原时,可以执行下列命令: # gzip -dc /ghost.img.gz.gz | dd of=/dev/sda




提醒:
       如果你把镜像恢复到另一台计算机上,你可能会发现你的网卡是eth1,而不是eth0。这是因为
       /etc/udev/rules.d/70-persistent-net.rules   文件把你做镜像的计算机的网卡作为eth0登记了。  
       如果你的网络脚本对eth0进行了处理,而没有对eth1进行处理,那么不修改网络脚本,你可能就无法上网了。


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在linux上用dd命令实现ghost功能 -- 神奇的fdisk和dd命令 的相关文章

  • 自动化环境搭建pytest+allure

    pytest安装 安装pytest pip install pytest 61 61 4 0 2 pip install pytest html 生成html测试报告 Allure搭建 1 下载Allure安装包 xff0c 找到对应版本
  • gazebo model的sdf文件中的uri路径

    让我们先看一个gazebo模型的sdf文件iris depth camera down sdf lt sdf version 61 39 1 5 39 gt lt model name 61 39 iris depth camera dow
  • adb连接不上手机测试设备

    问题 xff1a 解决 cannot connect to 5555 由于目标计算机积极拒绝 xff0c 无法连接 10061 解决办法 xff08 Windows 43 R xff1a cmd环境 xff09 1 连接USB数据线 xff
  • navicat连接本地mysql数据库报1251(版本问题)

    本地数据库服务已经启动 xff0c navicat连接本地数据库出现如下错误 xff0c 一般首次使用或下载新版本navicat会出现 xff0c 因为我下载的10 0版本 xff0c 它采用新的保密方式 xff0c 与默认旧版本5 0不同
  • oracle中的违反完整性约束条件问题

    在用sql语句创建表时 xff0c 出现了下列问题 xff1a 在这 xff0c 把这个问题出现的原因总结一下 xff1a 1 数据类型长度不一致 A表中的外键字段和B表中的被外键关联的字段数据类型或长度不一致 由此产生了问题 xff0c
  • python web快速建站基础

    1 Django基础 Django是一个开放源代码的Python Web应用框架 xff0c 由Python写成 xff0c 采用了MVT的框架模式 xff0c 即模型M xff0c 模板T和视图V 1 1 MVT 与MVC模式类似 xff
  • pycharm报找不到模块问题

    在学习python数据可视化时 xff0c 用到库特性时 xff0c 例如csv xff0c 总是提示类似 module csv has no attribute writer 的问题 xff0c 后来发现把这些库的文件夹名字改为 csv1
  • Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面

    Linux 安装配置Docker 和Docker compose 并在docker中部署mysql和中文版portainer图形化管理界面 首先环境准备 xff1a 下载Ubuntu20 04 4版本并打开vmare16虚拟机 xff08
  • Android设备获取wifi下的ipv6地址

    ipv6技术逐渐普及并得到广泛的应用 xff0c 很多企业也开始部署自己的ipv6网络 xff0c 很多终端也开始支持ipv6技术 遗憾的是 xff0c android虽然得到广泛普及 xff0c 但android并没有原生支持ipv6 可
  • 程序猿的情话

    世界上最遥远的距离 xff0c 是我在if里你在else里 xff0c 似乎一直相伴又永远分离 xff1b 世界上最痴心的等待 xff0c 是我当case你是switch xff0c 或许永远都选不上自己 xff1b 世界上最真情的相依 x
  • Kinect v2相机标定

    Kinect2 相机标定 到手kinect v2相机 xff0c 和已有的ur3双臂组装一体 xff0c 实现物体识别和物体抓取 xff0c 在相机使用之前需先进行相机标定 xff0c 在此记录下相机标定的过程 为什么要进行相机标定 相机作
  • 如何制作开源依赖库上传至GitHub供他人使用

    背景 在项目开发中经常会使用别人的第三方依赖库 xff0c 在之前的Eclipse时代 xff0c 基本都是通过拷贝jar包引入到工程中去使用 现如今大部分 Android开发者都开始使用Android Studio工具进行开发 xff0c
  • roslaunch px4 multi_uav_mavros_sitl_sdf.launch报错

    转载自 xff1a https www cnblogs com pig fly p 13971458 html 在试图运行multi uav mavros sitl sdf launch时报错 xff1a while processing
  • secureCRT串口无法输入

    用串口配置交换机的时候 xff0c 出现的问题 xff1a 用secureCRT建了一个串口COM1后 xff0c 连接上开发板后 xff0c 可以正确接受和显示串口的输出 xff0c 但是按键输入无效 解决方法 xff1a Session
  • 经典编程书籍(C++, 网络, Windows, Linux)【转载】

    书单中列举的都是相关领域的经典书籍 xff0c 必读之作 此书单的编辑参考了很多网站 xff0c 包括一些名家的推荐 xff0c 例如侯捷 xff0c 孟岩 xff0c 荣耀 xff0c 潘爱民等等 xff0c 在此也向这些前辈表示感谢 1
  • Ubuntu 20.04 LTS 发布最终 Beta 版本

    Ubuntu 团队通过邮件列表宣布推出 Ubuntu 20 04 LTS 最终 Beta 版本 xff0c 并预告稳定版将于2020年4月23日发布 虽然是最终的 Beta 版本 xff0c 但毕竟尚处于测试阶段 xff0c 因此不建议在生
  • Git——6个免费的GUI客户端

    目录 1 简介 1 1 测试的工具 1 2 测试方法 2 SourceTree 2 1 详情 2 2 概述 2 3 印象 3 GitHub Desktop 3 1 详情 3 2 概述 3 3 印象 4 Git Extensions 4 1
  • SourceTree Git管理神器使用教程详解

    目录 前言 xff1a SourceTree Github Desktop TortoiseGit 可视化管理工具对比 xff1a SourceTree介绍和Atlassian账号注册和登录教程 xff1a 连接Gitee or GitHu
  • 软件测试项目篇

    目录 1 项目启动2 需求分析3 制定测试方案 xff08 计划 43 策略 xff09 4 测试执行流程 1 项目启动 了解项目背景 2 需求分析 功能需求 xff1a 文件类型 xff1a 支持所有的文件压缩文件个数 xff1a 最多压
  • LTE系统信息(1)-MIB

    1 什么是MIB 为了能正常接入小区 xff0c UE在完成扫频 xff08 无论是指定频点扫频还是全频段扫频 xff0c 目的都是为了找到合适的中心载波频点 xff0c 参考 LTE物理传输资源 xff08 3 xff09 时频资源 xf

随机推荐

  • vi编辑器

    目录 简介 基本操作 1 移动光标 2 定位 3 删除 4 复制 5 查找
  • ubuntu下进行串口通信

    1 首先下载串口通信需要的uart文件 xff0c 用于数据封装json文件 下载地址 xff1a http download csdn net download m zhangjingdong 10164628 http download
  • GPS轨迹飘点处理(原创)

    当我们处理gps设备传过来的数据时 xff0c 最让人头疼的事情莫过于设备定位异常所传输的异常点了 xff0c 我们习惯的叫它为飘点 这些数据是设备层面的异常 xff0c 目前没有什么有效的方法来减少设备发送的飘点 但是我们可以通过程序来过
  • 创建多个带有摄像头的四旋翼gazebo模型

    完整的model文件和launch文件我上传在资源里 xff1a 多个带有摄像头的四旋翼gazebo模型 zip 1 启动多个iris四旋翼模型 PX4源码里有iris sdf等四旋翼模型文件 xff0c 但是如果要启动多个iris模型和m
  • 最全面的PLC学习网站

    http www gkwo net wenku list 13 htm PLC工控资料学习网
  • ImportError: Failed to import test module: 2

    1 在进行unittest测试时 xff0c 运行报错如下 导入import unittest 包 xff0c 创建的文件名字得是 Test 开头的 xff0c 不然报如下的错误 我的文件名字是 2 unittest简单实用 first t
  • 面试:微信朋友圈测试流程(功能测试,性能测试,界面测试,易用性测试,网络测试,兼容性测试,安全性测试)

  • HTTP请求/响应报文结构

    HTTP请求 响应报文结构 HTTP请求报文 一个HTTP请求报文由四个部分组成 xff1a 请求行 请求头部 空行 请求数据 1 请求行 请求行由请求方法字段 URL字段和HTTP协议版本字段3个字段组成 xff0c 它们用空格分隔 比如
  • MySQL数据库面试知识点

    MySQL数据库面试知识点 转自 xff1a https blog csdn net ThinkWon article details 104778621
  • 牛客网试题+答案分析+大牛面试经验(1)

    一 选择题 xff08 1 xff09 有以下程序 xff1a include lt stdio h gt char fun char c if c lt 61 39 Z 39 amp amp c gt 61 39 A 39 c 61 39
  • C++动态链接库中的全局变量面试题

    其实主要问题是三个模块 xff1a 模块 a 静态库 a 模块 b 二进制 b 静态引用a 动态加载c 模块 c 动态链接库c 静态引用a 关键在于静态库a里有一个静态全局变量 xff0c 没错就是我们的日志模块 原先的这个静态的模块中的静
  • 长连接与短连接的区别以及使用场景

    首先介绍下短链接和长连接的区别 xff1a 短连接 连接 gt 传输数据 gt 关闭连接 比如HTTP是无状态的的短链接 xff0c 浏览器和服务器每进行一次HTTP操作 xff0c 就建立一次连接 xff0c 但任务结束就中断连接 因为连
  • 进程的有哪几种状态,状态转换图,及导致转换的事件

    进程的特征与三种基本状态 1 特征 xff1a 1 xff1a 动态性 xff0c 2 xff1a 并发性 xff0c 3 xff1a 独立性 xff0c 4 xff1a 异步性 2 状态 xff1a 1 xff1a 就绪状态 当进程已分配
  • 请问单核机器上写多线程程序,是否需要考虑加锁,为什么?

    参考回答 xff1a 在单核机器上写多线程程序 xff0c 仍然需要线程锁 因为线程锁通常用来实现线程的同步和通信 在单核机器上的多线程程序 xff0c 仍然存在线程同步的问题 因为在抢占式操作系统中 xff0c 通常为 每个线程分配一个时
  • 阿木p200四旋翼配置经验笔记

    本文初次写于2021 06 09 我做编队试验用的阿木P200四旋翼 xff0c 空循环uwb定位下完成了机载计算机控制的编队飞行以及二维码引导降落 记录一下对到手的P200飞机仍需要更改调试的配置 xff1a 硬件加装 加装uwb标签用于
  • Linux C/C++ 学习路线

    一 秋招 Linux C C 43 43 offer 情况 二 Linux C C 43 43 方向的一些思考 三 计算机基础知识的梳理 四 C 43 43 方向的深入学习路线 五 项目 43 亮点 43 面试的一些思考 六 总结 前言 L
  • 如何在简历中描述自己的项目

    项目经历 很多人在描述项目经历的时候容易陷入一个误区 讲套话 xff0c 如 xff1a 用html xff0c css编写基本页面 xff0c 用js XX库完成页面交互 动画 用AJAX xff08 axios库等 xff09 实现前后
  • 网络工程师(路由交换)必备面试题

    一 TCP IP通信原理 物理层 1 OSI七层模型与TCP IP模型的区别 xff1f 2 异步传输与同步传输的优缺点与区别 应用场景 xff1f 3 多模光纤与单模光纤的区别以及用途 xff1f 4 RJ45线序568A和568B的区别
  • git show/diff 界面操作

    最近发现在git show或者git diff的界面 xff0c 也就是显示对比差异的时候 xff0c 无法编辑 xff0c 很不爽 xff0c 在网上也找不到类似说明 xff1a 仔细研究后发现有很多快捷键说明 xff0c 部分如下 xf
  • 在linux上用dd命令实现ghost功能 -- 神奇的fdisk和dd命令

    神奇的fdisk和dd命令 深深的苦恼中 xff0c 灵光乍现 xff1a 神奇的ghost的原理是什么呢 xff1f 不就是数据复制吗 xff1f Linux下的dd命令不就是最强大的数据复制工具 xff01 既然如此 xff0c 我为什