美文网首页
第八章 文件与文件系统的压缩、打包与备份

第八章 文件与文件系统的压缩、打包与备份

作者: 过来摸摸头丶 | 来源:发表于2019-07-01 16:53 被阅读0次

    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不支持没有挂载的文件系统备份。所以只能备份已挂载的

    • 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指令来处理。

    相关文章

      网友评论

          本文标题:第八章 文件与文件系统的压缩、打包与备份

          本文链接:https://www.haomeiwen.com/subject/dwftfctx.html