- 1.文件归档与压缩
- 1)什么是文件归档
- 将多个文件或目录合并成为一个特殊的文件
- 压缩是压缩单个文件 归档压缩是压缩多个文件(可以压缩/etc目录下所包含的所有文件) 归档压缩是压缩加普通归档
- 2)为什么要对文件进行压缩?
- 当我们在传输大量的文件时,通常都会选择将该文件进行压缩,然后再进行传输。
- 首先:压缩后的文件会比压缩前的文件小。一个28G的文件夹压缩后能达到6G
- 其次:多个文件传输很慢,但单个文件传输会很快,同时还能节省网络的消耗
- 3)Windows的压缩包与Linux的压缩包能否互通?
- 在windows系统下,我们接触最多的压缩格式是 rar 或 zip ,但在Linux上使用最多的压缩格式是 zip 和tar.gz 。当然不用担心,Linux上的压缩格式放在windows系统下都是可以正常打开的。
- PS: Linux不支持 Windows下的 RAR 格式的压缩文件。Windows和Linux互通通常选择 zip
- 4)Linux下压缩包有哪些常见的类型
- .gz gzip压缩工具,只能压缩文件,会删除原文件
- .bz2 bzip2压缩工具,只能压缩文件,会删除原文件
- .tar.bz2 tar归档结合bzip2压缩工具
- 2.压缩工具(gzip bzip2)
- 下载压缩工具
- yum install -y gzip
- yum install -y bzip2
- 案例
- 1 ).创建两个10M的文件
- dd if=/dev/zero of=10M-1 count=1
- dd if=/dev/zero of=10M-2 count=1
-
- 3).压缩文件
- 使用gzip 10M-1压缩文件
- gzip 10M-1
- gzip 10M-2
- ll -lh 10M* = 查看当前目录下有10M前缀的文件
- -rw-r--r--. 1 root root 32 9月 7 15:42 10M-1.gz
- -rw-r--r--. 1 root root 32 9月 7 15:43 10M-2.gz
- 压缩文件后,源文件消失,只有压缩后的文件,压缩后的文件名为10M-1.gz
-
- 使用bzip2 10M-1 压缩文件
- [root@localhost ~]# bzip2 10M-1
- [root@localhost ~]# bzip2 10M-2
-
- [root@localhost ~]# ll -lh 10M*
- -rw-r--r--. 1 root root 41 9月 7 15:42 10M-1.bz2
- -rw-r--r--. 1 root root 41 9月 7 15:43 10M-2.bz2
-
- 4).解压缩
- [root@localhost ~]# gzip -d 10M-2.gz
- [root@localhost ~]# gzip -d 10M-1.gz
- [root@localhost ~]# ll -lh 10M*
- -rw-r--r--. 1 root root 512 9月 7 15:42 10M-1
- -rw-r--r--. 1 root root 512 9月 7 15:43 10M-2
- 解压缩文件后,压缩文件消失,只有源文件,解压缩后的文件名为10M-1
-
- 总结
- 1)两个压缩文件工具 gzip 10M-1与bzip2 10M-1,用法一致
- 2)源文件和压缩文件不能共存
- 3)都不能对目录压缩
- 4)目前基本只会使用gzip 10M-1
- 3.zip (压缩归档工具)
- 使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令
- 默认情况下没有zip和unzip工具,需要进行安装
- yum install -y zip
- 下载yum install -y unzip (解压)
- zip 语法
- zip [参数] [压缩包名][压缩的目录或者文件的路径]
- zip命令的常见参数
- m 将文件压缩后,删除原文件
- o 将压缩文件内的所有文件的最新变动时间设为压缩的时间
- q 在压缩的时候不显示指令执行的过程
- r 递归压缩,将自定目录下的所有子文件以及文件一起处理
- x 文件列表,压缩时排除文件列表中的文件
- t (日期) 指定压缩文件的日期
- T 显示信息
- l(L) 显示版权信息
- 案例
- 1.压缩文件为zip包
- [root@localhost ~]# touch file 创建文件
- [root@localhost ~]# zip file.zip file 把文件压缩为zip包
-
- ll -h file*
- 2.压缩目录为zip包
- [root@localhost ~]# mkdir -p dir/1/2/3 创建目录
- [root@localhost ~]# zip -r dir.zip dir/ 压缩目录为zip包
- adding: dir/1/ (stored 0%)
- adding: dir/1/2/ (stored 0%)
- adding: dir/1/2/3/ (stored 0%)
-
-
- 3.查看zip压缩包是否是完整的
- [root@localhost ~]# zip -T file.zip
-
- 4.不解压压缩文件,直接查看压缩包的内容
- unzip -l file.zip
- unzip -t file.zip
-
- 5.解压zip文件包,默认解压至当前目录
- unzip file.zip
-
- 6.解压zip内容至/opt目录
- [root@localhost ~]# unzip file.zip -d /opt/ 解压zip内容至/opt目录
- [root@localhost ~]# ls /opt 进入/opt目录
- file
-
- 总结:比较三种压缩工具的压缩性能和效率
- 1.创建三个100M的测试文件
- dd </dev/zero >100M_1 bs=10M count=10
- dd </dev/zero >100M_2 bs=10M count=10
- dd </dev/zero >100M_3 bs=10M count=10
- 2.分别使用gzip、bzip2、zip对三个文件压缩,观察压缩文件大小
- 1.gzip:是公认的压缩这速度最快,压缩大文件的时候与其他的压缩方式相比更加明显,历史最久,应用最广泛的压缩方式
- 2.bzip:压缩形成的文件小,但是可用性不如gzip
- 3.xz:是最新的压缩方式,可以自动提供最佳的压缩率
- 3.tar 支持文件和目录的归档,本事不具备压缩能力。 归档工具需要结合gzip和bzip2实现压缩归档
- 用法:tar + 选项+ 压缩成文件的名称.tar.gz+源文件名称
- 语法:tar
- tar [选项] 归档文件 被归档的文件或目录
- 语法:tar [-zjxcvfpP] filename
- c #创建新的归档文件
- x #对归档文件解包
- t #列出归档文件里的文件列表
- v #输出命令的归档或解包的过程 (详细过程)
- f #指定包文件名,多参数f写最后
- z #使用gzip压缩归档后的文件(.tar.gz)
- j #使用bzip2压缩归档后的文件(.tar.bz2)
- J #使用xz压缩归档后的文件(tar.xz)
- C # 指定解压目录位置 (释放指定路径)
- X #排除多个文件(写入需要排除的文件名称) (开启排除列表文件)
- h #打包软链接
- --hard-dereference #打包硬链接
- --exclude #在打包的时候写入需要排除文件或目录
- 普通归档.tar 压缩归档 tar.gz 压缩归档 tar.bz2
- 创建归档文件 cf czf cjf
- 查看归档文件 tf cjf tf
- 释放归档文件 xf xjf xf
- 在centos7版本中对查看和释放做了优化,统一了选项
- 实例
- 1.压缩归档 10m-1 和10m-2两个文件
- 普通归档
- 压缩归档
- 2.查看归档文件
- 普通归档
- 压缩归档
- 3.解压到当前路径
- tar xf 10M.tar.gz
- tar xf 10M.tar
- 4.解压到指定路径/opt
- tar xf 10M.tar.gz -C /opt
- tar xf 10M.tar -C /opt
- 5.对/etc/目录创建归档,排除/etc/hosts /etc/resolv.config tar czf etc.tar.gz --exlcude=/etc/hosts --exlcude=/ect/resolv.conf /etc
- 注意:
- 2.如果排除文件过多建议使用排除列表文件来定义,需要使用X选项
- 1) 创建列表文件,将需要排除列表文件路径写入该文件,以行为为单位
- 2)创建归档
- tar czf etc.tar.gz exlcude_list/etc
- 企业归档实例
- 归档时的文件路径问题
- 需要将/etc/sysconfig/network-scripts/ifcfg-ens33创建压缩归档到/backup目录中mkdir -p /backup
- 方法一
- tar czf /backup/ens33.tar.gz /etc/sysconfig/network-scripts/ifcfg-ens33
- tar cjf /backup/ens33.tar.gz /etc/sysconfig/network-scripts/ifcfg-ens33
- tar xf /backup/ens33.tar.gz -C /
- 方法二
- cd /etc/sysconfig/network-scripts
- tar czf /backup/ens33-1.tar.gz ifcfg-ens33
- tar tf /backup/ens33-1.tar.gz
- tar xf /backup/ens33-1.tar.gz -C /etc/sysconfig/network-scripts/
- 注意:
- 1.在归档时,使用绝对路径的时候,会出现"tar: Removing leading `/' from member names",这是提
- 示信息,提示将绝对路径的/删除,方便后面解压缩(释放),如果不想弹出该信息,有两种方法:
- 1)可以使用&> /dev/null
- 2)创建归档时,进入/目录,使用相对路径来归档
- cd /
- tar czf /backup/ens33.tar.gz etc/sysconfig/network-scripts/ifcfg-ens33
- 2.建议在归档时,根据情况选择路径
|