用tar为linux系统备份

实验室里面要在虚拟机里面搭建一个开发环境, 然后又要迁移到公司进行部署, 最坑的部署环境的时候不能联网,所以我就不能使用yum或者apt-get 自动安装软件, 解除依赖

于是我尝试了使用tar来实现, 经过几次的失败, 最终成功了系统备份(拷贝), 异地部署

[TOC]

##安装系统

系统版本

CentOS release 6.5 (Final)

备份命令

以下是备份系统时用的命令, 供参考

1
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/boot --exclude=/tmp

cvpfz 重要的是p参数, 保存权限, –exclude 是不包含文件夹, boot文件夹最好还是不包含的
备份的时候会报错, 不用管, 主要是文件在读取的时候又发生了改变, 这些文件大多其实是没有必要备份的,只不过一一指出又比较麻烦.

恢复系统

  • 备份新系统的硬盘分区(*重要!!!!!!!!!!)

    cp /etc/fstab /

  • 恢复系统

要求: 系统必须先安装与之前系统同版本的linux系统(理论上只要是linux系统就行(要备份/boot)但我没试过)

1
2
3
su
mv backup.tgz /
tar xvpfz backup.tgz -C /
  • 恢复硬盘分区信息

    1
    cp /fstab /etc/fstab
  • 重启
    sudo shutdown -r now
    如果叫你输入密码, 应该输入原先备份系统的密码

是不是很简单

注意事项:
备份fstab 这个很关键, 不然系统启动的时候 , 挂载不了硬盘, 因为uuid不服, 不过如果是在同一台机器备份与还原, 又没有修改分区,应该没什么问题

更高级的备份需要备份硬盘, 要用到一个工具clonezila
我觉得比较麻烦, 有兴趣的可以自行baidu一发

另外:

事实上tar备份很简单,但有几个地方需要注意一下:
1.尽量使用LiveCD进行备份,以免系统正在运行时有变化;
rawedit2.tar的排除选项后直接就是本目录下的文件名,而不应该是路径名;
3.尽量使用LiveCD进行还原,重启前需要该一下grub.cfg和fstab两个文件里面相关的UUID(根目录、swap分区等)……

@author chenyun