本文将介绍两种方式的系统盘的完整的备份,两种方式各有优缺点,需要根据实际情况来进行选择

  • 使用dd的完整镜像克隆的方式
  • 使用tar去备份数据,安装grub的方式

dd方式

优点:

简单,一条命令 dd if=/dev/sda of=/dev/sdb 就可以进行完整的系统备份了

缺点:

时间非常长,备份一个系统盘,无论数据多少,系统盘全部会读取一遍,时间比较久

备份目的盘需要大于原盘

分区无法调整,根原分区一模一样

tar方式

优点:

时间短,只需要备份实际磁盘上的数据即可

自定义,可以修改分区的大小,可以控制备份的类容,可以定期备份

对目的盘大小无限制,比较灵活

缺点:

人为修改东西比较多,需要手动去修改一些信息

当然在掌握了一定的linux基础的情况下建议是使用tar方式的,,下面将介绍tar方式的处理方式:

给准备用来备份的磁盘进行分区和格式化

首先使用 df -h 来检查当前的挂载的系统分区:

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb5 285G 4.1G 266G 2% /
tmpfs 2.0G 4.0K 2.0G 1% /dev/shm
/dev/sdb1 239M 81M 141M 37% /boot
/dev/sdb2 6.7G 17M 6.3G 1% /var/log

查看磁盘的大小:

[root@zhongbo ~]# fdisk -l
Disk /dev/sdb: 320.1 GB, 320072933376 bytes

本例子中备用磁盘为sda,大小为240G:

[root@zhongbo ~]# fdisk -l /dev/sda
Disk /dev/sda: 240.1 GB, 240057409536 bytes

查看系统盘详细的分区信息

[root@zhongbo ~]# parted -l
Model: ATA WDC WD3200AAJS-2 (scsi)
Disk /dev/sdb: 320GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos Number Start End Size Type File system Flags
1 1049kB 263MB 262MB primary ext4 boot
2 263MB 7603MB 7340MB primary ext4
3 7603MB 9751MB 2147MB primary linux-swap(v1)
4 9751MB 320GB 310GB extended
5 9752MB 320GB 310GB logical ext4

可以看到分区表模式为msdos,分区信息为含有扩展分区,逻辑分区了,下面为新准备的盘进行分区,分区信息跟原来尽量一样,这个地方也可以根据自己的需要进行调整

[root@zhongbo ~]# parted /dev/sda
(parted) mklabel msdos
(parted) mkpart primary 1049kB 263
(parted) mkpart primary 263 7603
(parted) mkpart primary 7603 9751
(parted) mkpart extended 9751 100%
(parted) mkpart logical 9752 100%
(parted) p
Model: ATA INTEL SSDSC2BF24 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos Number Start End Size Type File system Flags
1 1049kB 263MB 262MB primary ext4
2 263MB 7603MB 7340MB primary ext4
3 7603MB 9751MB 2147MB primary linux-swap(v1)
4 9751MB 240GB 230GB extended lba
5 9752MB 240GB 230GB logical ext4

格式化硬盘

[root@zhongbo ~]# mkfs.ext4 /dev/sda1
[root@zhongbo ~]# mkfs.ext4 /dev/sda2
[root@zhongbo ~]# mkswap /dev/sda3
[root@zhongbo ~]# mkfs.ext4 /dev/sda5

备份原始磁盘上的数据到备份目的盘

在本地系统盘上创建一个备份的目录,将数据打包放到这个目录下面

[root@zhongbo ~]# mkdir /backup

按这个系统来说需要备份三个分区/ , /var/log/, /boot

开始备份/

所有的操作都进入到/目录下操作

[root@zhongbo ~]# cd /
[root@zhongbo /]# tar zcvpf /backup/gen.tar.gz -C / --exclude=boot/* --exclude=var/log/* --exclude=backup/* --exclude=lost+found/* --exclude=mnt/* --exclude=dev/* --exclude=proc/* --exclude=tmp/* --exclude=sys/* .

注意这里排除了很多不需要备份的目录

备份boot分区

[root@zhongbo /]# tar zcvpf /backup/boot.tar.gz -C /boot/ .

备份/var/log

[root@zhongbo /]# tar zcvpf /backup/log.tar.gz -C /var/log/ .

恢复/的数据

[root@zhongbo /]# mkdir /mnt/gen
[root@zhongbo /]# mount /dev/sda5 /mnt/gen/
[root@zhongbo /]# tar zxvpf /backup/gen.tar.gz -C /mnt/gen/

恢复/boot的数据

[root@zhongbo /]# mkdir /mnt/boot
[root@zhongbo /]# mount /dev/sda1 /mnt/boot/
[root@zhongbo /]# tar zxvpf /backup/boot.tar.gz -C /mnt/boot/

恢复/var/log

[root@zhongbo /]# mkdir /mnt/log
[root@zhongbo /]# mount /dev/sda2 /mnt/log/
[root@zhongbo /]# tar zxvpf /backup/log.tar.gz -C /mnt/log/

修改启动文件

拿到新的分区的blkid

[root@zhongbo /]# blkid /dev/sda1
/dev/sda1: UUID="a6ca4369-109c-47ed-a522-7e1752a6681b" TYPE="ext4"
对应boot
[root@zhongbo /]# blkid /dev/sda2
/dev/sda2: UUID="f775f248-57d8-49a7-9334-60bc75a53685" TYPE="ext4"
对应log [root@zhongbo /]# blkid /dev/sda5
/dev/sda5: UUID="6942c7d6-486c-4d51-bb4d-a126ee0c05b1" TYPE="ext4"
对应/ [root@zhongbo /]# blkid /dev/sda3
/dev/sda3: UUID="154784d8-dbe3-45c8-8fcb-cb4f5a14ae44" TYPE="swap"
对应swap
[root@zhongbo /]# vim /mnt/gen/etc/fstab
修改对应分区的uuid信息 修改menu.list
[root@zhongbo ~]# vim /mnt/boot/grub/menu.lst
修改root= 根分区的uuid,第一次做的时候,就是在这个地方忘了修改,进入系统后能够看到启动画面,但是没法启动内核,修改好了后,就可以正常的启动了

安装grub

查找grub分区

grub> find /grub/grub.conf
find /grub/grub.conf
(hd0,0)
(hd1,0)
grub>

修改其中的新盘上的grub然后分辨新的grub在哪台机器上,我的新盘是(hd0,0)

grub> root (hd0,0)
grub> setup (hd0)
setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 27 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+27 p (hd0,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> quit

完成后,系统盘就完全备份了一份了,重启就可以启动一个一模一样的系统了

linux系统克隆系统盘的更多相关文章

  1. VMware Linux系统克隆

    系统克隆 网卡设备无法识别 解决克隆虚拟机后网卡设备无法识别启动问题的方法 一.故障问题 从vmware workstation中克隆(clone)了一个CentOS 6的虚拟机,启动之后发现网卡没有 ...

  2. Linux虚拟机克隆后网卡UUID问题

    虚拟机中的Linux系统克隆后,网卡配置eth0中的UUID可被克隆的系统是一样的,这样UUID就失去了唯一性. 我参考了该篇博客: 有时我们不小心将/etc/sysconfig/network-sc ...

  3. VMware 克隆 Linux 系统后找不到 eth0 网卡问题(转)

    [问题描述] 使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70 ...

  4. 【转】VMware 克隆 Linux 系统后找不到 eth0 网卡问题

    [问题描述] 使用 VMware 虚拟机的克隆功能,快速复制已安装好的 Linux 系统. 克隆完成之后,发现没有 eth0 网卡. [解决方法] 1. 编辑 /etc/udev/rules.d/70 ...

  5. 用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决?

    用虚拟机安装了一台Linux系统,突然想克隆一台服务器,克隆后发现无法上网,如何解决? 答:    a.编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-eth ...

  6. 使用VMware克隆Linux系统

    最近在学习使用solr云技术,因为是用来学习操作,因此需要在一台虚拟机上,安装多台LinuxOS. 但是又想偷懒,不想每安装一个LinuxOS,就重新配置Linux环境,所以使用克隆,只需安装好一个模 ...

  7. 用"再生龙"Clonezilla 来克隆Linux系统

      上周公司买了5套高配置PC机来做测试用.上面要装好CentOS 加上一堆工具,有web的,数据库的,还有一些自己开发的工具.有些朋友肯定想,直接用kickstart不就行了,确实.kickstar ...

  8. 使用dd命令克隆整个Linux系统

    参考:https://www.cnblogs.com/jikexianfeng/p/6103504.html 本次使用使用dd命令克隆整个Ubuntu系统 1,VM安装一台Ubuntu虚拟机 过程不详 ...

  9. 克隆linux系统后,将eth1修改成eth0

    使用VMware克隆的linux系统之后,发现网卡信息只有eth1,却没有eth0.将eth1修改成eth0. 1.vi /etc/udev/rules.d/70-persistent-net.rul ...

随机推荐

  1. Mysql数据库分布式事务XA详解

    XA事务简介 XA 事务的基础是两阶段提交协议.需要有一个事务协调者来保证所有的事务参与者都完成了准备工作(第一阶段).如果协调者收到所有参与者都准备好的消息,就会通知所有的事务都可以提交了(第二阶段 ...

  2. spring boot:用rocketmq发送延时消息用来取消订单(spring boot 2.3.3)

    一,为什么要用延时消息来取消订单? 1,为什么要取消订单 在电商的下单过程中,需要在生成订单时扣减库存, 但有可能发生这种情况:用户下了单,临时改变主意不再支付, 则订单不能无限期的保留,因为还要把占 ...

  3. python爬虫 -掘金

    import json from time import sleep import requests url = "https://web-api.juejin.im/query" ...

  4. PHP字符串如何转换成if条件语句

    例如: $condition = "2 == 2 && 3 == 5"; if ( $condition ){ echo 1; } 怎样把 $condition 转 ...

  5. Python基础知识点整理(详细)

    Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...

  6. dubbo-config-spring自定义xml标签扩展

    要实现自定义自定义标签扩展,需要有如下步骤(在spring中定义了两个接口NamespaceHandler.BeanDefinitionParser,用来实现扩展) 1.设计配置属性和JavaBean ...

  7. EFCore之SQL扩展组件BeetleX.EFCore.Extension

    ​        EFCore是.NETCore团队开发的一个ORM组件,但这个组件在执行传统SQL的时候并不方便,因此BeetleX.EFCore.Extension的设计目的是让EFCore执行传 ...

  8. JUC---08ForkJion(分支合并)

    一.什么是ForkJion Fork/Join框架是Java7提供的并行执行任务框架,思想是将大任务分解成小任务,然后小任务又可以继续分解,然后每个小任务分别计算出结果再合并起来,最后将汇总的结果作为 ...

  9. 上午小测1 B.序列 哈希表+数学

    题目描述 \(EZ\) 每周一都要举行升旗仪式,国旗班会站成一整列整齐地向前行进. 郭神摄像师想要选取其中一段照下来.他想让这一段中每个人的身高成等比数列,展示出最萌身高差.但他发现这个太难办到了.于 ...

  10. python中的类方法,实例方法和静态方法的区别

    类方法是类的方法,在定义的时候要在上方加上一个@classmethod装饰器来进行装饰,形参是cls,类和实例都可以取调用类方法: 实例方法是实例对象方法,只有实例可以调用,类是不能调用的,形参是se ...