Skip to content

[!quote] 打包 打包 是将多个文件合并成一个文件,并不会减少文件的大小

[!quote] 压缩 压缩 是减少某个文件的大小

[!hint] 常见的打包,压缩格式

  • 打包文件
    • *.tar tar 程序打包的文件
  • 压缩文件
    • *.rar rar 程序压缩的文件
    • *.7z 7zip 程序压缩的文件
    • *.gz gzip 程序压缩的文件
    • *.xz xz 程序压缩的文件
    • *.bz2 bzip2 程序压缩的文件
  • 打包压缩文件
    • *.zip zip 程序打包压缩的文件
    • *.tar.gz tar 打包,gzip 程序压缩的文件
    • *.tar.xz tar 打包,xz 程序压缩的文件
    • *.tar.bz2 tar 打包,bzip2 程序压缩的文件
    • *.tar.7z tar 打包,7z 程序压缩的文件

zip

压缩

  • zip 创建的压缩文件的名称 被压缩文件的绝对路径
    • -r 递归压缩包含该目录的子目录和文件
    • -q 静默操作【不在终端显示任何消息
    • -o 将输出文件放到当前目录
    • -* 数字表示压缩级别【1 ~ 9】,9 的压缩后体积最小,但耗时最长
    • -x 文件 将要被压缩的文件中的某个文件排除,不进行压缩
bash
zip -rqo shiyanlou.zip /home/shiyanlou/Desktop

加密 zip 包

  • -e 创建加密压缩包
bash
zip -reo shiyanlou_encryption.zip /home/shiyanlou/Desktop

跨平台兼容

  • -l 解决 Linux 和 Windows 上换行符不兼容问题,将 Linux 上的 LF,转换成 Windows 上的 CR + LF
bash
zip -rlo shiyanlou.zip /home/shiyanlou/Desktop

解压

  • unzip 要被解压缩的文件
    • -q 静默解压
    • -d 目录 将解压缩后的文件放到指定的目录
    • -l 不解压缩,只查看压缩包的内容
bash
# 将shiyanlou.zip文件,解压缩到ziptest目录下
unzip -d ziptest shiyanlou.zip

unzip -l shiyanlou.zip

跨平台兼容

  • -o 编码类型 解决由于编码方式不一致【Windows 使用 GBK……,Linux 使用 UTF-8】,出现的中文乱码问题
bash
# 在Linux中解压缩Windows的压缩文件
unzip -O GBK 中文压缩文件.zip

tar

打包

  • tar 被打包的文件目录
    • -P 保留原始压缩路径最前面的 /【保证了解包文件后的绝对路径】
    • -p 保留文件的属性【所有者,可读可写权限……】
    • -c 创建新的打包文件【打包必需参数
    • -f 文件名 指定打包后的文件【打包必需参数
    • -h 打包时,如果遇到符号链接,则打包符号链接背后的真实文件

[!quote] 符号链接 符号链接类似快捷方式,它指向文件系统中的另一个文件,当你尝试打开一个符号链接时,你会被自动重定向到这个链接指向的那个文件

bash
tar -Pcf shiyanlou.tar /home/shiyanlou/Desktop

解包

  • -x 解包文件
  • -f 文件名 指定要解包的文件
  • -p 保留文件的属性【所有者,可读可写权限……】
  • -C 路径 将解包后的文件放到哪个路径下
  • -t 只查看,不解包
bash
# 将shiyanlou.tar解包到tardir路径下
tar -xf shiyanlou.tar -C tardir

tar -tf shiyanlou.tar

压缩,解压缩

  • -z 打包成 .tar.gz 格式
  • -J 打包成 .tar.xz 格式
  • -j 打包成 tar.bz2 格式
bash
# 压缩
tar -czf shiyanlou.tar.gz /home/shiyanlou/Desktop

# 解压缩
tar -xzf shiyanlou.tar.gz