一、.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压缩包,当然也可以直接调用gzip
或gunzip
命令单独压缩/解压.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模式
关于
zip
和unzip
命令的参数主要翻译于官方文档,部分翻译可能不准确或存在错误,高级使用请以官方文档或帮助手册为准
Comments | NOTHING