# 压缩打包工具 压缩文件可以节省磁盘空间,提高传输效率,在移动端开发中尤为重要。 ## file `file`用于识别文件类型。 ``` [root@lwz dir1]# file 1.txt.gz 2.txt.bz2 3.txt.xz 4.txt 1.txt.gz: gzip compressed data, was "1.txt", from Unix, last modified: Mon May 28 08:14:08 2018 2.txt.bz2: bzip2 compressed data, block size = 900k 3.txt.xz: XZ compressed data 4.txt: UTF-8 Unicode text ``` ## 压缩工具 ### gzip 语法: ``` gzip [-d -c #] filename ``` 参数: - `-d`:解压缩 - `-c`:将压缩后的文件输出到指定目录下,不更懂源文件 - `#`:压缩等级,1-9,数字越大压缩率越高,压缩时间越长,默认为9 > 注意:gzip不能压缩目录 示例: ``` # 压缩 $ gzip -c file.txt > file.txt.gz # 解压缩 $ gzip -d file.txt.gz # 查看gzip压缩包的内容 $ zcat file.txt.gz ``` ### bzip2 安装: ``` $ yum install -y bzip2 ``` 语法: ``` bzip2 [-d -z -c #] filename ``` 参数: - `-d`:解压缩 - `-z`:压缩,不加`-z`选项也可以压缩 - `#`:压缩等级,1-9,数字越大压缩率越高,压缩时间越长,默认为9 > 注意:bzip2不能压缩目录。其用法和`gzip`基本相同,效果比`gzip`好。 示例: ``` # 压缩 $ bzip2 -z file.txt # 解压缩 $ bzip2 -d file.txt.bz2 ``` ### xz 语法: ``` xz [-d -z -c] filename ``` 示例: ``` # 压缩并保留源文件 $ xz -c filename # 解压缩到指定路径并保留源文件 $ xz -d -c filename.xz > /root/filename ``` > 用法与`bzip2`和`gzip`类似,压缩程度最大,默认为6。不可压缩目录。 ### zip `zip`在windows和linux中都比较常用,可以压缩文件和目录; `zip`特点:zip压缩之后,源文件默认会保存。 安装: ``` $ yum install -y zip #压缩包 $ yum install -y unzip #解压缩包 ``` 语法: $ zip [-r] filename.zip 源文件 $ unzip filename.zip 示例: ``` # 压缩单个或多个文件 $ zip filename.zip filename1 filename2 filename3 # 压缩多个文件或目录,压缩目录要加-r选项 $ zip -r filename.zip filename1 dirname1 # 解压缩 $ unzip filename.zip # 解压缩到指定路径 $ unzip filename.zip -d /root/ ``` > `zip`解压文件不能指定文件名,压缩前是什么就是什么名字。 ## tar(打包工具) `tar`可以把目录打包成一个文件,把所有文件整合成一个大文件,方便复制和移动。 语法: ``` tar [选项] filename ``` 选项: - `-c`:创建压缩包 - `-x`:解压压缩包 - `-f`:指定目标文件名,如果多个选项组合使用,`-f`必须放在最后面 - `-z`:使用gzip压缩 - `-j`:使用bzip2压缩 - `-J`:使用xz压缩 - `-t`:查看压缩包内容 - `-v`:显示压缩过程 - `-C`:解压到指定路径 - `--exclude=filename`:表示打包除了`filename`文件之外的所有文件。也可以用`--exclude filename`表示。`filename`可以是目录、占位符`*`、正则表达式等,特殊符号需要用双引号引起来,例如`"*.txt"`。 示例: ``` # 打包 $ tar -cvf filename.tar filename # 解包 $ tar -xvf filename.tar # 查看压缩包内容 $ tar -tf filename.tar # 打包/root目录并过滤/root目录下aa.txt文件和bb目录 $ tar -cvf filename.tar --exclude=/root/aa.txt --exclude=/root/bb /root ``` ### 打包并压缩 ``` # 打包的同时使用gzip压缩 $ tar -zcvf filename.tar.gz filename # 解压 $ tar -zxvf filename.tar.gz # 打包的同时使用bzip2压缩 $ tar -jcvf filename.tar.bz2 filename # 解压 $ tar -jxvf filename.tar.bz2 # 打包的同时使用xz压缩 $ tar -Jcvf filename.tar.xz filename # 解压 $ tar -Jxvf filename.tar.xz # 打包的同时使用zip压缩 $ tar -cvf filename.tar.zip filename # 解压 $ tar -xvf filename.tar.zip ```