1.常见的压缩指令
1.1 gzip,zcat/zmore/zless/zgrep
语法:
[root@root ~]# gzip [-cdtv#] 档名
[root@root ~]# zcat 档名.gz
[root@root ~]# zgrep -n 'xxx' 档名.gz
选项与参数:
-c :将压缩的数据输出到屏幕上,可透过数据流重导向来处理;
-d :解压缩的参数;
-t :可以用来检验一个压缩文件的一致性,看看文件是否有错误;
-v :可以显示初原文件/压缩文件的压缩比信息等等;
-# :#为数字,代表压缩的等级。-1 速度最快,压缩比最差,-9 速度最慢,压缩比最好,预设是-6。
注意:当使用gzip时,在默认情况下原本的文件被压缩成.gz格式,源文件就不再存在了。
1.2 bzip2,bzcat/bzmore/bzless/bzgrep
bzip2时为了取代gzip并提供更佳的压缩比而来的。用法与gzip基本相同。
语法:
[root@root ~]# bzip2 [-cdkzv#] 档名
[root@root ~]# bzcat 档名.bz2
选项与参数:
-c :将压缩的过程产生的数据输出到屏幕上;
-d :解压缩的参数;
-k :保留源文件,而不会删除原始的文件;
-z :压缩的参数;
-v :可以显示原文件/压缩文件的压缩比;
-# :#为数字,代表压缩的等级。-1 速度最快,压缩比最差,-9 速度最慢,压缩比最佳;
1.3 xz,xzcat/xzmore/xzless/xzgrep
xz是比bzip2压缩比更高的软件。用法也上面几本也一样。
语法:
[root@root ~]# xz [-dtlkc#] 档名
[root@root ~]# xcat 档名.xz
选项与参数:
-d :解压缩;
-t :测试压缩文件的完整性,是否有误;
-l :列出压缩文件的相关信息;
-k :保留原本的文件不删除;
-c :将压缩的过程产生的数据输出到屏幕上;
-# :#为数字,代表压缩的等级。-1 速度最快,压缩比最差,-9 速度最慢,压缩比最佳;
2.打包指令: tar
前面的指令大多只能对单一文件来进行压缩,虽然gzip、bzip2、xz也能对目录进行打包,但是它们对目录的压缩是"将目录的所有文件分别进行压缩"。
2.1 tar
语法:
[root@root ~]# tar [-z|-j|-J] [cv] [-f 待建立的新档名] 文件名称/目录(打包与压缩)
[root@root ~]# tar [-z|-j|-J] [tv] [-f 已有的tar档名](查看档名)
[root@root ~]# tar [-z|-j|-J] [xv][-f 已有的tar档名][-C 目录](解压缩)
常见的选项与参数:
-c :建立打包文件,可搭配-v来查看过程中被打包的档名;
-t :查看打包文件的内容含有哪些档名,重点是"查看档名";
-x :解打包或解压缩,可搭配-C在特定目录解开;
-z :通过gzip支持压缩/解压缩;
-j :通过bzip2支持压缩/解压缩;
-J :通过xz支持压缩/解压缩;
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f :设置要被处理的档名;
-C :选项用在解压缩,指定解压缩到某个目录;
-p :保留备份数据的原本权限与属性,常用于备份重要的配置文件;
-P :保留绝对路径,也就是允许备份数据中含有跟目录存在;
--exclude=file :在压缩的过程中,不要将file压缩/打包;
3.XFS文件系统的备份与还原
3.1 XFS文件系统备份:xfsdump
xfsdump是累计备份的:第一次备份的时候一定是完整备份,完整备份在xfsdump中被定义为level0;第二次备份时,只会记录与第一次完整备份有差异的文件。
不过,xfsdump有以下几个限制:
xfsdump不支持没有挂载的文件系统备份。所以只能备份已挂载的
xfsdump必须使用root权限才能操作
xfsdump只能备份XFS文件系统
xfsdump备份下来的数据(文件或储存媒媒体)只能让xfsrestore解析
xfsdump是通过文件系统的UUID来分辨备份档的,因此不能备份两个具有相同UUID的文件系统
[~]# xmfdump [-L S_label] [-M M_label] [-l #][-f 备份档] 待备份资料
[~]# xfsdump -I
选项与参数:
-L :xfsdump记录每次备份的session标头,这里可以填写针对此文件的说明
-M :xfsdump可以记录储存媒体的标头,这里可以填写此媒体的说明
-l :指定等级0~9,预设为0,即完整备份
-f :有点类似tar,后面加产生的文件
-I :从/var/lib/xfsdump/inventory 列出目前备份的信息状态
用xfsdump备份完整的文件系统##
[~]# xfsdump -l 0 -L boot_all -M boot_all -f /srv/boot.dump /boot
也可以不加-L或-M的,那样会进入互动模式
[~]# ll /srv/boot.dump
[~]# ll /var/lib/xfsdump/inventory
用xfsdump进行累积备份##
# 看一下有没有任何文件系统被xfsdump备份过?
[~]# xfmdump -I
# 建立一个大约10MB的文件在/boot内
[~]# dd if=/dev/zero of=/boot/testing.img bs=1M count=10
# 开始建立累积备份档
[~]# xfsdump -l 1 -L boot_2 -M boot_2 -f /srv/boot.dump1 /boot
[~]# ll /srv/boot*
# 最后看一下是否有记录
[~]# xfsdump -I
3.2 XFS文件系统还原xfsrestore
复原完整备份资料##
[~]# xfsrestore -I ##用来查看备份文件资料
[~]# xfsrestore [-f 备份档] [-L S_label] [-s] 待复原目录 ##单一文件全系统复原
[~]# xfsrestore [-f 备份档] -r 待复原目录 ##通过累积备份文件复原
[~]# xfsresotre [-f 备份档] -i 待复原目录 ##进入互动模式
选项与参数:
-I :可查询备份数据
-f :后面加档名
-L :就是session的label name
-s :后面加特定目录,即仅回复一个文件或目录
-r :如果用文件来存储备份数据,这个不需要使用。如果一个磁盘内有多个文件,需要用它累积复原
-i :进入互动模式
简单复原level 0的文件系统##
怎么将/boot整个系统复原到最原本到状态?
# 示例1.直接将数据给它覆盖即可
[~]# xfsrestore -f /srv/boot.dump -L boot_all /boot
# 示例2.将备份资料在/tmp/boot底下解开
[~]# mkdir /tmp/boot
[~]# xfsrestore -f /srv/boot.dump -L boot_all /tmp/boot
[~]# du -sm /boot /tmp/boot
109 /boot
99 /tmp/boot
# 问题:为什么大小不一样?使用命令比较一下
[~]# diff -r /boot /tmp/boot
Only in /boot:testing.img
# 可以看到/boot增加过一个文件
# 示例3.仅复原备份档内档grub到/tmp/boot2/里面
[~]# mkdir /tmp/boo2
[~]# xfsrestore -f /srv/boot.dump -L boot_all -s grub /tmp/boot2
复原累积备份资料##
如果备份数据是由level 0 -> level 1 -> ... 上面我们复原了level 0之后。接下来当然要复原level 1了。
# 继续复原level 1 到/tmp/boot中
[~]# xfsrestore -f /srv/boot,dump1 /tmp/boot
如果我们不知道备份档里有什么文件怎么办?就通过"- i"来执行吧。如果我们想指定level 0 的备份数据里面有哪些东西,然后再少量的还原回来。
# 1.先进入备份文件,准备找出需要备份的文件名,同时还原到/tmp/boot3中
[~]# mkdir /tmp/boot3
[~]# xfsrestore -f /srv/boot.dump -i /tmp/boo3
命令执行后,可以查看到交互界面中能使用到的命令 -> 在交互界面使用ls查看所有文件 -> 使用"add [path]"命令添加要执行的备份的文件名 -> 使用"extract"跳出
# 2.使用ls -l 查看/tmp/boot3是否有备份
[~]# ls -l /tmp/boot3
3.3 备份文本文档
如果需要备份文本,怎么做呢?
先将所需备份的数据建置成为一个映像档(iso),利用mkisofs指令处理;
将该映像文件刻录至光盘或DVD中,利用cdrecord指令来处理。