tar命令系统备份与恢复(还原or新装)

常心水
2023-12-01

最近要做linux系统的快速克隆与虚拟服务器部署,翻了很多论坛的教程,均卡在了最后一步恢复系统引导上,最后将几篇帖子里提到的内容串到一起捋了一遍才找到具体的实现方法

前提条件

  • 恢复的目标服务器需先安装系统(与备份的系统一致,下方示例为centos)
  • 恢复的目标服务器可用空间要大于所备份的系统(建议恢复的系统磁盘空间>=备份的系统磁盘空间)
  • 恢复的目标服务器可以远程连接(可为跳板机+ssh)

操作步骤

  1. 备份系统文件

    tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --warning=no-file-changed
    

    命令及选项解释

    “tar”是备份系统所使用的程序。
    
    “cvpfz”是tar的选项,意思是“创建档案文件”、“保持权限”(保留所有东西原来的权限)、“使用gzip来减小文件尺寸”。
    
    “backup.gz”是将要得到的档案文件的文件名。
    
    最后的“/” 是我们要备份的目录,即整个文件系统。
    
    “–exclude”选项指定了备份时必须排除在外的目录。
    有些目录是无用的,例如“/proc”、“/lost+ found”、“/sys”。当然,“backup.gz”这个档案文件本身必须排除在外,否则你可能会得到一些超出常理的结果。如果不把“/mnt”排 除在外,那么挂载在“/mnt”上的其它分区也会被备份。另外需要确认一下“/media”上没有挂载任何东西(例如光盘、移动硬盘),如果有挂载东西, 必须把“/media”也排除在外。
    
    备份完成后,在文件系统的根目录将生成一个名为“backup.tgz”的文件。
    
    备份时可能出现tar:/:file changed as we read it ,一般情况下不用处理,可在备份命令后加上“--warning=no-file-changed”来忽略备份时的错误信息,或者重新执行一遍备份命令(重新执行前记得删除之前已备份的系统压缩包)
    
  2. 传输备份系统至目标服务器

    使用xftp或其他文件传输工具将上方步骤备份的backup.tgz复制到目标服务器的 / 目录下(此处必须为/目录)

  3. 备份目标系统的boot分区

    tar -cvpzf boot.tar.gz /boot
    
  4. 解压备份系统包

    tar xvpfz backup.tgz -C /
    
  5. 删除目标服务器boot分区

    rm -rf /boot
    

    可能会出现“资源正在访问,无法删除”,忽略此提示信息

    查看删除情况

    ls /boot
    

    剩余内容为文件夹,此文件夹下所有的单文件均已被删除,如未成功删除可手动执行rm -rf 文件名进行删除

  6. 使用目标服务器原boot信息覆盖boot文件夹

    tar xvpfz boot.tar.gz -C /
    
  7. 修改fstab文件

    查看磁盘和分区信息

    lsblk
    

    编辑fstab文件

    vi /etc/fstab
    

    将/、/boot、/boot/efi、/home、swap挂载的磁盘信息修改为和上方磁盘名称一致,如上方无此分区信息,可在fstab文件中删除对应列

    重新挂载磁盘信息

    mount -a /etc/fstab
    
  8. 修改网络信息

    查看网卡名称

    ip addr
    

    查看网卡文件

    cd /etc/sysconfig/network-scripts/
    ls
    

    删除多余的网卡文件

    # 此处删除的网卡文件为恢复时所备份系统的网卡文件
    rm -rf ifcfg-enp3s0
    

    修改/新增网卡配置文件
    以下内容为静态ip配置,IPADDR、GATEWAY、DNS1以项目地址实际为准

    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=192.168.1.52
    GATEWAY=192.168.1.3
    DNS1=192.168.1.210
    ZONE=public
    

    重启网络服务

    service network restart
    
  9. 检查服务运行情况

    查看正在运行中的服务

    systemctl | grep running
    

    检查如下服务是否在正在运行的服务列表中
    不同的项目需要启动不同的服务,请依实际项目为准

    mysqld.service			# mysql服务
    nginx.service			# Nginx服务
    php-fpm.service			# php-fpm服务
    redis-server.service	# Redis服务
    swp-service-stay-active.sevice	# 上述服务的保活服务
    

    上述服务如有未在上图列表中的,执行下方命令重启服务
    下方重启服务命令为上述服务的保活程序,可参照我另一篇博客:Linux系统服务保活

    systemctl restart swp-service-stay-active.sevice
    
  10. 验证是否恢复完成

    重启系统

    reboot
    

    如重启后未成功进入到登录页面,提示未找到磁盘/未找到系统(替换boot目录步骤失败),请重新安装系统并重新执行上述步骤

    登录后查看ip地址

    ip addr
    

    通过网页访问上方命令获取到的ip地址,查看是否成功显示系统页面,如未成功显示请检查上述服务是否启动成功

参考链接:
转载并整理 - Linux系统备份及还原-tar
使用 tar 命令备份与还原 Linux 系统
Centos7 用 tar 备份恢复 (迁移)
UEFI引导linux启动过程的顺序,及修改办法

 类似资料: