Linux常用解压、压缩命令

发布于 2025-03-02  41 次阅读


一、.tar文件

注意:.tar仅仅是打包,没有压缩功能

其通常配合.gz或.bz2压缩格式使用(因为其默认只能压缩一个文件)

由于.tar格式仅打包,所以执行速度很快,且消耗CPU非常少

常用格式:

tar -xvf FileName.tar # 解包
tar -cvf FileName.tar DirName # 将DirName和其下所有文件(夹)打包
  • -x是解包,-c是打包
  • -v是显示命令执行的详细信息,如果不希望输出过程请去掉
  • -f后面要指定创建/解包的文件名,所以f必须写在最后,其它选项顺序随意

详细说明:

tar命令用于将文件和目录创建为档案或将档案还原为文件和目录,简单说就是打包。该程序最初的设计目的是将文件备份到磁带上(Tapearchive)

tar命令(点击展开)

目前大多数的Linux发行版本均预装有tar,如果没有可以手动从软件仓库中安装:

apt install tar # Ubuntu/Debian
yum install tar # Centos/RHEL

命令格式:

tar [OPTIONS] [FILE1] [FILE2] ...

参数说明:

  • -A, --catenate, --concatenate:新增文件到已存在的存档
  • -c, --create:建立新的存档
  • -C, --directory=DIR:将tar的工作目录从当前目录改为指定目录。
    • 该选项对顺序敏感,即会影响其后的所有选项和参数
  • -d, --diff, --compare:对比档案与文件系统的差异
  • --delete:从档案中删除指定的文件
  • -f, --file=ARCHIVE:指定存档文件
    • -f后面要跟随.tar文件名,指明要操作的文件,所以如果是将选项写在一起的形式(如-zcvf)必须将其放在最后
  • -j, --bzip2:通过bzip2命令压缩或解压缩档案
  • -k, --keep-old-files:还原档案时,保留当前目录下的原有文件不被覆盖
  • -l, --check-links:如果不是所有链接都被转储,则打印一条消息
  • -m, --touch:还原文件时,不变更文件的更改时间
  • -N, --newer, --after-date=DATE:只将比指定日期更新的文件保存到档案中
  • -O, --to-stdout:将提取的文件名和目录名打印到标准输出
  • -p, --preserve-permissions, --same-permissions:提取文件时保留文件原来的权限设置
  • -P, --absolute-names:创建存档时不移除文件名称前的/号
  • -r, --append:追加文件到档案的尾部
  • -t, --list:列出档案的内容
  • -u, --update:添加比档案中文件更新的文件到档案中
  • -v, --verbose:显示指令执行过程信息
  • -W, --verify:向档案写入文件后尝试验证
  • -x, --extract, --get:从档案中提取文件
  • -z, --gzip, --gunzip, --ungzip:通过gzip命令压缩或解压档案
  • -Z, --compress, --uncompress:通过compress指令处理备份文件
  • --exclude=PATTERN:排除符合指定模式的文件
  • -?, --help:显示短选项的概要信息并退出
  • --usage:显示可用选项列表并退出
  • --version:显示版本和版权信息并退出

常用参数:

  • -c:创建新的档案(打包)
  • -x:从档案中提取文件(解包)
  • -v:显示详细过程信息
  • -z:配合gzip压缩/解压(.tar.gz格式)
  • -j:配合bzip2压缩/解压(.tar.bz2格式)
  • -f:后面指定文件名

二、.tar.gz文件

.gz是Linux系统中最常用的压缩格式,其压缩过程占用CPU较少,同时可以获得一个比较理想的压缩率

具体的命令和原理在.tar的详细参数说明中已经给出,这里给出常用的命令格式:

tar -zxvf FileName.tar.gz # 解压
tar -zcvf FileName.tar.gz DirName # 将DirName及其下的所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到指定目录(DesDirName)
  • -x是解包,-c是打包
  • -v是显示命令执行的详细信息,如果不希望输出过程请去掉
  • -f后面要指定创建/解包的文件名,所以f必须写在最后,其它选项顺序随意
  • -C后面指定要解压的目录

三、.tar.bz2文件

.bz2格式的压缩率非常好,但是同时意味着需要消耗的CPU资源增多

具体的命令和原理在.tar的详细参数说明中已经给出,这里给出常用的命令格式(就是将.tar.gz命令中的z换成j):

tar -jxvf FileName.tar.gz # 解压
tar -jcvf FileName.tar.gz DirName # 将DirName及其下的所有文件(夹)压缩
tar -C DesDirName -zxvf FileName.tar.gz # 解压到指定目录(DesDirName)
  • -x是解包,-c是打包
  • -v是显示命令执行的详细信息,如果不希望输出过程请去掉
  • -f后面要指定创建/解包的文件名,所以f必须写在最后,其它选项顺序随意
  • -C后面指定要解压的目录

四、.gz文件

上面是利用tar命令直接连打包带压缩生成.tar.gz压缩包,当然也可以直接调用gzipgunzip命令单独压缩/解压.gz文件

gzip既可以压缩也可以解压

gunzip只能用于解压

其实gunzip就是gzip的一个硬链接,本质上还是在调用gzip命令

主流的Linux发行版本都默认安装了gzip,如果没有,则手动从软件仓库安装:

sudo apt install gzip # Ubuntu/Debian
sudo yum install gzip # CenOS/RHEL
sudo dnf install gzip # Fedora
sudo pacman -S gzip # Arch Liunx

常用格式:

gunzip FileName.gz # 解压1
gzip -d FileName.gz # 解压2
gzip FileName # 压缩,注意只能压缩文件
  • 可以使用gzip FileName1 FileName2这种形式压缩多个文件,会得到FileName1.gz, FileName2.gz多个压缩后的文件
  • 直接使用gzip压缩会删除原文件,最后只得到压缩后的.gz文件,解压同理
  • 如果希望保留原文件,可以使用-k参数
    • 例如gzip -k FileName或者gzip -d -k FileName.gz

详细说明

gzip命令(点击展开)

命令格式:

gzip [OPTION] ... [FILE] ...

参数说明:

  • -c, --stdout:将结果打印到标准输出,保持原始文件不动
  • -d, --decompress:解开压缩文件
  • -f, --force:强行压缩文件,不理会文件名或硬链接是否存在以及该文件是否为符号链接
  • -h, --help:显示帮助信息
  • -k, --keep:保留(不删除)输入文件
  • -l, --list:列出压缩文件的内容
  • -L, --license:显示版本与版权信息
  • -n, --no-name:不保存或恢复原始的文件名和时间戳
  • -N, --name:保存原始的文件名和时间戳
  • -q, --quiet:不显示警告信息
  • -r, --recursive:对目录递归操作
  • --rsyncable:创建适合rsync的存档
  • -S, --suffix=SUF:在压缩文件上使用指定后缀SUF
  • --synchronous:同步输出(遇到系统崩溃更安全,但速度较慢)
  • -t, --test:测试压缩文件的完整性
  • -v, --verbose:显示过程详细信息
  • -V, --version:显示版本号
  • -1, --fast:更快压缩
  • -9, --best:更好压缩
    • -1压缩最快,压缩的文件最大;-9压缩最慢,压缩的文件最小
    • 压缩比可以指定为1-9中的任意数字
    • 默认为-6

如果命令中没有指定文件(命令格式中的[FILE]),或者当该位置为-时,读取标准输入

gzip -d等价于gunzip

五、.bz2文件

前面是利用tar命令直接连打包带压缩生成.tar.bz2压缩包,当然也可以直接调用bzip2命令单独压缩/解压.bz2文件

同样,主流的Linux发行版本都默认安装了bzip2,如果没有,则手动从软件仓库安装:

sudo apt install bzip2 # Ubuntu/Debian
sudo yum install bzip2 # CenOS/RHEL
sudo dnf install bzip2 # Fedora
sudo pacman -S bzip2 # Arch Liunx

常用格式:

bzip2 -d FileName.bz2 # 解压
bzip2 FileName # 压缩
  • 可以使用bzip2 FileName1 FileName2这种形式压缩多个文件,会得到FileName1.bz2, FileName2.bz2多个压缩后的文件
  • 直接使用bzip压缩会删除原文件,最后只得到压缩后的.bz2文件,解压同理
  • 如果希望保留原文件,可以使用-k参数
    • 例如bzip2 -k FileName或者bzip2 -d -k FileName.bz2

详细说明

bzip2命令(点击展开)

命令格式:

bzip2 [flags and input files in any order]

参数说明:

  • -h, --help:显示帮助信息
  • -d, --decompress:强制解压文件
  • -z, --compress:强制压缩文件
  • -k, --keep:保留(不删除)输入文件
  • -f, --force:覆盖已经存在的输出文件
  • -t, --test:测试压缩文件的完整性
  • -c, --stdout:输出到标准输出
  • -q, --quiet:不显示警告信息
  • -v, --verbose:显示过程详细信息(两个-v显示更详细)
  • -L, --license:显示版本与版权信息
  • -V, --version:显示版本与版权信息
  • -s, --small:使用更少的内存(最多2500k)
  • -1 .. -9:设置块大小(100k .. 900k)
  • --fast:同-1
  • --best:同-9

如果命令中没有指定文件名,bzip2会从标准输入压缩或解压到标准输出

上面的短参数可以合并书写,例如“-v -4”可以写成“-v4”或"-4v"

  • bzip2默认为压缩,等价于bzip2 -z
  • bunzip2默认为解压,等价于bzip2 -d
  • bzcat默认为解压到标准输出,等价于bzip2 -cd

六、.zip文件

zip压缩格式通常用于Windows系统中

不过考虑到有时候需要在Linux系统中解压zip文件,或者压缩成zip格式便于Windows系统使用,等跨平台需求

部分Linux发行版本默认并没有安装zip工具,需要手动安装

此外zip(压缩)和unzip(解压)是两个软件包,不过通常使用apt或yum安装其中一个,另外一个会作为依赖一起安装

sudo apt install zip # Ubuntu/Debian
sudo yum install zip # CentOS/REHL

常用格式:

zip -r FileName.zip FileDir # 压缩FileDir目录及其下所有子文件(夹)
unzip FileName.zip # 解压到当前目录

详细说明

zip和unzip命令(点击展开)

命令格式:

zip [-options] [-b path] [=t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]

参数说明:

  • -f:更新(freshen),仅更新现有文件
  • -u:更新(update),仅更新现有文件或新增文件
  • -d:从压缩包中移除一个文件
  • -m:将文件移动进zip包(删除原始文件)
  • -r:递归压缩(压缩所以子文件(夹))
  • -j:删除(不处理)文件原始目录路径
  • -0:仅存储(进zip包,不压缩)
  • -l:将LF转换成CR LF
    • -ll:将CR LF转换成LF
    • CR - Carriage Return - \r -13(ASCII) - 用于MacIntosh(早期的Mac)
    • LF - Linefeed - \n - 10(ASCII) - 用于Unix/Linux/Mac OS X(较新的Mac)
    • CR LF - \r\n - 用于Windows
  • -1:更快压缩
  • -9:更好压缩
    • 可指定-1到-9,默认为-6
  • -q:静默操作(不输出信息)
  • -v:显示操作详细信息/打印版本信息
  • -c:对新增或更新的文件添加单行注释
  • -z:对zip压缩包添加注释
  • -@:从标准输入读取名称
  • -o:将压缩包内的文件修改时间戳变为最新压缩时的时间
  • -x:排除后面指定的文件
  • -i:仅处理后面指定的文件
  • -F:尝试修复压缩包
    • -FF:进一步尝试
  • -D:不在压缩包内存储目录信息
  • -A:调整自解压程序offsets
  • -J:移除自解压程序的sfx
  • -T:测试zip文件完整性
  • -X:排除额外的文件属性
  • -y:对于符号链接文件就存储为链接而不是其指向的实际文件
  • -e:加密(使用标准(弱)PKZip2.0加密,使用密码)
  • -n:不压缩指定字符串结尾的文件
  • -h:显示帮助信息
  • -h2:显示更多帮助信息

默认从标准输入压缩至标准输出


命令格式:

unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]

参数说明:

  • -p:提取文件到管道(pipe),无消息输出
  • -l:列出文件(短格式)
  • -f:更新已有文件,不会创建文件
  • -t:测试压缩文档数据
  • -u:更新已有文件,创建不存在的文件
  • -z:仅显示压缩包注释
  • -v:显示过程详细信息/显示版本信息
  • -T:将压缩包时间戳更新到最新
  • -x:排除指定的文件(xlist中的)
  • -d:提取文件到指定目录(exdir
  • 解压修改:
  • -n:不覆盖已有文件
  • -q:安静模式
    • -qq:更安静
  • -o:覆盖文件且不进行提示
  • -a:自动转换任意文本文件到当前系统格式,如行尾标识、EOF等
  • -j:删除路径(不创建文件夹)
  • -aa:将所有文件都视为文本内容
  • -U:对所有非ASCII码的Unicode字符使用#Uxxxx和#Lxxxxxx显示
  • -UU:忽略任意Unicode字符目录
  • -C:文件名匹配规则忽略大小写
  • -L:将(某些)名称转换为小写
  • -X:恢复文件UID/GID信息
  • -V:保留文件VMS版本号
  • -K:保留setuid/setgid/tacky权限
  • -M:管道(pipe)使用多页
  • -O:字符集,专用于DOS、Windows和OS/2档案的字符编码
  • -I:字符集,专用于UNIX和其它档案的字符编码
  • -h:显示帮助信息
  • -hh:显示更多帮助信息

默认操作是从file[.zip]中提取[list]中的文件,排除[xlist]中的文件到[exdir]

-Z进入ZipInfo模式

关于zipunzip命令的参数主要翻译于官方文档,部分翻译可能不准确或存在错误,高级使用请以官方文档或帮助手册为准


TianziWeb From 2011.02.15