zoukankan      html  css  js  c++  java
  • linux系统克隆系统盘

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

    • 使用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
    

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

  • 相关阅读:
    sql 时间函数大全
    JavaScript代码收集
    inno setup打包.netframework
    Mono for Android 安装配置方法 附破解版
    恢复Reflector反编译后资源文件的办法
    sql时间格式转换
    函数式编程
    获取Java程序运行的路径 | 获取当前jar包的路径
    CIPAddressCtrl类的使用(IP地址与CString的互相转化)
    java的System.getProperty()方法可以获取的值
  • 原文地址:https://www.cnblogs.com/zphj1987/p/13575304.html
Copyright © 2011-2022 走看看