Linux 文件打包与压缩

实验楼 Linux 基础学习笔记

Posted by lijian on September 16, 2017

文章 实验楼实验笔记

基础

文件后缀名 说明
*.zip zip 程序打包压缩的文件
*.rar rar 程序压缩的文件
*.7z 7zip 程序压缩的文件
*.tar tar 程序打包,未压缩的文件
*.gz gzip 程序(GNU zip)压缩的文件
*.xz xz 程序压缩的文件
*.bz2 bzip2 程序压缩的文件
*.tar.gz tar 打包,gzip 程序压缩的文件
*.tar.xz tar 打包,xz 程序压缩的文件
*tar.bz2 tar 打包,bzip2 程序压缩的文件
*.tar.7z tar 打包,7z 程序压缩的文件

zip 压缩打包程序

  • 使用zip 打包文件夹 ```java zip -r -q -o lijian.zip /home/lijian/Desktop du -h lijian.zip
第一行命令中,-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。后面使用 du 命令查看打包后文件的大小
* 设置压缩级别为 9 和 1(9 最大,1 最小),重新打包
```java
zip -r -9 -q -o shiyanlou_9.zip /home/shiyanlou/Desktop -x ~/*.zip

添加了一个参数用于设置压缩级别 -[1-9],1 表示最快压缩但体积大,9 表示体积最小但耗时最久。最后那个 -x 是为了排除上一次创建的 zip 文件,否则又会被打包进这一次的压缩文件中,注意:这里只能使用绝对路径,否则不起作用

注意:

关于 zip 命令,因为 Windows 系统与 Linux/Unix 在文本文件格式上的一些兼容问题,比如换行符(为不可见字符),在 Windows 为 CR+LF(Carriage-Return+Line-Feed:回车加换行),而在 Linux/Unix 上为 LF(换行),所以如果在不加处理的情况下,在 Linux 上编辑的文本,在 Windows 系统上打开可能看起来是没有换行的。如果你想让你在 Linux 创建的 zip 压缩文件在 Windows 上解压后没有任何问题,那么你还需要对命令做一些修改

zip -r -l -o shiyanlou.zip /home/shiyanlou/Desktop

需要加上 -l 参数将 LF 转换为 CR+LF 来达到以上目的

使用 unzip 命令解压缩zip 文件

unzip lijian.zip

使用安静模式,将文件解压到指定目录,如果不存在,则创建

unzip -q lijian.zip -d lijianfile

通常 Windows 系统上面创建的压缩文件,如果有有包含中文的文档或以中文作为文件名的文件时默认会采用 GBK 或其它编码,而 Linux 上面默认使用的是 UTF-8 编码,如果不加任何处理,直接解压的话可能会出现中文乱码的问题(有时候它会自动帮你处理),为了解决这个问题,我们可以在解压时指定编码类型。

使用 -O(英文字母,大写 o)参数指定编码类型:

unzip -O GBK 中文压缩文件.zip

tar 打包工具

  • 创建一个 tar
    tar -cf lijian.tar /home/lijian/Desktop
    

    -c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar,可以写成 tar -f shiyanlou.tar -c ~。你还可以加上 -v 参数以可视的的方式输出打包的文件

  • 解压一个文件(-x)到指定目录(-C)
    tar -xf lijian.tar -C tardir
    
  • 创建 tar.gzip 文件
    tar -czf lijian.tar.gz /home/lijian/Desktop
    
  • 解压 *.tar.gz 文件
    tar -xzf lijian.tar.gz
    
压缩文件格式 参数
*.tar.gz -z
*.tar.xz -J
*.tar.bz2 -j

总结

  • zip
    • 打包:zip something.zip something (目录加 -r 参数)
    • 解包:unzip something.zip
    • 指定路径:-d 参数
  • tar
    • 打包:tar -cf something.tar something
    • 解包:tar -xf something.tar
    • 指定路径:-C 参数