请选择 进入手机版 | 继续访问电脑版

管理员之家 - 网站管理员、站长技术与运营交流平台!

 找回密码
 注册
搜索
热搜: linux 服务器
查看: 4380|回复: 1

[linux] 利用tar备份linux系统详解

[复制链接]
发表于 2009-2-5 13:08:28 | 显示全部楼层 |阅读模式
备份Windows系统需要用Ghost,备份linux显然要简单的多,用tar命令就可以搞定。

用tar备份的特点:
1、保留权限
2、适合备份整个目录
3、可以选择不同的压缩方式
4、如果选择不压缩还能实现增量备份,部份还原,参考man tar

命令格式:
tar [-cxtzjvfpPN]  压缩文档的名称 欲备份目录

参数:
-c :建立一个压缩文件的参数指令(create 的意思);
-x :解开一个压缩文件的参数指令!
-t :查看 tarfile 里面的文件!
        注意:在参数中,c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。
-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
-j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
-v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!
-f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :(大写)可以使用绝对路径来压缩!
-N :(大写)比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
-C:(大写)目的目录,即切换到指定的目录
--exclude FILE:在压缩的过程中,不要将 FILE 打包!

例一:linux下备份自身系统
1.备份自身系统
用root权限,运行完整的备份命令:
$ sudo su

# tar -cvpzf /mydata/backup.tgz / --exclude=/proc --exclude=/lost+found --exclude=/tmp --exclude=/sys --exclude=/media --exclude=/home --exclude=/mydata

采用不压缩的方式备份
# tar -cvpf /mydata/backup.tar / --exclude=/proc --exclude=/lost+found --exclude=/tmp --exclude=/sys --exclude=/media --exclude=/home --exclude=/mydata

接着,让我们稍微解释一下:
    * '-cvpzf'是我们给tar加的选项。
    * /media/disk/backup.tgz是压缩包的存放路径与名称。
    * ‘/'是我们想要备份的目录,我们想要备份根目录下的所有的东西,所以使用 / 作为根目录。
    * '--exclude'就是我们要剔除的目录了。
    有些目录是不需要备份的。如:/proc目录、 /tmp目录、/sys目录,里面都是临时文件,备份容易出错,/home目录备份容易引起"tar: 由于前面延迟的错误而退出"的提示同时确保你没有任何东西挂载在/mnt、/media目录内,否则,会把被挂载的分区也备份在内,备份文件会很大。还要注意不要把备份文件本身也备份进去了,也需要剔除。

备份结束以后,在你的/media/disk目录下有一个backup.tgz ,这就是你的备份文件。

2.恢复备份
进入 Linux 系,使用tar的恢复命令,将会把你目标路径下的所有同名文件替换成压缩文档里的文件,目标路径下多出的目录与文件并不会必删除。
# sudo tar -xvpzf backup.tgz -C /                       # 还原采用GZIP压缩后的tgz备份文件
# sudo tar -xvpf backup.tar -C /                      # 还原无压缩的tar备份文件

注:参数-x是告诉tar程序解压缩备份文件。 -C 参数后面的 /是指定tar程序解压缩到的目录。


如果备份的是根目录下的整个系统,在本机上运行tar命令恢复linux自身系统很容易失败,建议进入其它linux系统或使用 LiveCD/LiveUSB 启恢复系统,命令如下:
# mkdir /tmp/root
# mount /dev/sdaX /tmp/root
# tar -xvpf /media/xxx/backup.tar -C /tmp/root

当然,恢复前可以先rm -rf /tmp/root/* 一下,这样就干干净净了。(就是之前说的删除根目录下的所有文件)
这个只是在本机上还原,如果是还原到别的机子上记得修改fstab文件。(可能还需要安装grub)


恢复完了以后,你的工作还没完成,别忘了重新创建那些在备份时被排除在外的目录,再手工建立如下一些目录:
# mkdir proc
# mkdir lost+found
# mkdir mnt
# mkdir sys
# mkdir media
等等

例二:运行另一个linux系统备份本机linux系统:
1.用live usb备份系统
用live cd/live usb启动,在图形界面下选择 “菜单-->附件-->Terminal” 或按“ctrl+alt+t”组合键打开命令行终端。
先挂载好硬盘上的系统与数据分区,再运行完整的备份命令:
# sudo su                        #切换到root权限# mkdir /media/disk-sys   #创建要备份的目标目录
# mkdir /media/disk-data   #创建存放备份文件的目录
# mount /dev/sda1 /media/disk-sys   #挂载系统分区到指定目录
# mount /dev/sda2 /media/disk-data  #挂载数据分区到指定目录
# tar -cvpzf /media/disk-data/backup.tgz -C /media/disk-sys *      

注解:
    备份文件的存放路径与名称为/media/disk-data/backup.tgz   
    其中的 -C 参数表示临时切换工作目录,这样压缩时只备份/meda/disk-sys目录内的内容,不含/media/disk-sys路径。
    备份时没有剔除任何目录,因为另一个linux没有运行,里面没有临时文件。
    注意backup.tgz后面是空格加-C;/media/disk-sys后面加空格后再加*
-------------------------------------------------------------------------------------------------------

也可以先切换到要备份的硬盘系统分区,再运行tar命令,输入以下命令:
# sudo su                           #切换到root权限
# mkdir /media/disk-sys     #创建要备份的目标目录
# mkdir /media/disk-data   #创建存放备份文件的目录
# mount /dev/sda1 /media/disk-sys   #挂载系统分区到指定目录
# mount /dev/sda2 /media/disk-data  #挂载数据分区到指定目录
# cd /media/disk-sys                           #进入要备份的系统分区目录
# tar -cvpzf /media/disk-data/backup.tgz *

注解:
    备份文件的存放路径与名称为/media/disk-data/backup.tgz
    只备份当前工作目录里的数据,不含/media/disk路径。
    备份时没有剔除任何目录,因为另一个linux没有运行,里面没有临时文件。
    注意backup.tgz后面是空格加*
-------------------------------------------------------------------------------------------------------

2.用Live usb还原系统:
建议先清空目标路径下的除/boot目录外的所有文件,再还原备份,命令如下:
# rm -fr    目录名

还原/media/disk-data/backup.tgz压缩包到/media/disk-sys目录下。
$ sudo su
# tar -xvpzf /media/disk-data/backup.tgz  -C /media/disk-sys
或:
# cd /media/disk-sys
# tar -xvpzf /media/disk-data/backup.tgz




您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|泗洪大湖网络科技有限公司 ( 苏ICP备13046962号-3 )

GMT+8, 2019-8-21 19:18 , Processed in 0.116623 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表