更多 CentOS Linux 常用命令整理请点击这里。
前言:
Linux 常用命令中,有很多用于对文件的压缩或解压,本文将介绍这些解压缩命令中不常见却非常实用的用法。
汇总:
( 1 ).tar 格式 解包:# tar xvf FileName.tar 打包:# tar cvf FileName.tar DirName(注:tar 是打包,不是压缩!) ( 2 ).gz 格式 解压 1:# gunzip FileName.gz 解压 2:# gzip -d FileName.gz 压 缩:# gzip FileName ( 3 ).tar.gz 格式 解压:# tar zxvf FileName.tar.gz 压缩:# tar zcvf FileName.tar.gz DirName ( 4 ).bz2 格式 解压 1:# bzip2 -d FileName.bz2 解压 2:# bunzip2 FileName.bz2 压 缩:# bzip2 -z FileName ( 5 ).tar.bz2 格式 解压:# tar jxvf FileName.tar.bz2 压缩:# tar jcvf FileName.tar.bz2 DirName ( 6 ).bz 格式 解压1:# bzip2 -d FileName.bz 解压2:# bunzip2 FileName.bz ( 7 ).tar.bz 格式 解压:# tar jxvf FileName.tar.bz ( 8 ).Z 格式 解压:# uncompress FileName.Z 压缩:# compress FileName ( 9 ).tar.Z 格式 解压:# tar Zxvf FileName.tar.Z 压缩:# tar Zcvf FileName.tar.Z DirName ( 10 ).tgz 格式 解压:# tar zxvf FileName.tgz ( 11 ).tar.tgz 格式 解压:# tar zxvf FileName.tar.tgz 压缩:# tar zcvf FileName.tar.tgz FileName ( 12 ).zip 格式 解压:# unzip FileName.zip 压缩:# zip FileName.zip DirName ( 13 ).lha 格式 解压:# lha -e FileName.lha 压缩:# lha -a FileName.lha FileName ( 14 ).rar 格式 解压:# rar a FileName.rar 压缩:# rar e FileName.rar
tar 命令(压缩):
tar 是 Linux 中最常用的解压缩命令。tar 命令可用于处理后缀名为 tar 、tar.gz 、tgz 、.tar.Z 、tar.bz2 的文件。
涉及参数说明:
-A 或 –catenate :新增文件到以存在的备份文件; -B :设置区块大小; -c 或 –create :建立新的备份文件; -C <目录> :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 -d :记录文件的差别; -x 或 –extract 或 –get :从压缩的文件中提取文件; -t 或 –list :列出备份文件的内容; -z 或 –gzip 或 –ungzip :通过 gzip 指令处理备份文件; -Z 或 –compress 或 –uncompress :通过 compress 指令处理备份文件; -f <备份文件> 或 –file=<备份文件> :指定备份文件; -v 或 –verbose :显示指令执行过程; -r :添加文件到已经压缩的文件; -u :添加改变了和现有的文件到已经存在的压缩文件; -j :支持 bzip2 解压文件; -l :文件系统边界设置; -k :保留原有文件不覆盖; -m :保留文件不被覆盖; -w :确认压缩文件的正确性; -p 或 –same-permissions :用原来的文件权限还原文件; -P 或 –absolute-names :文件名使用绝对名称,不移除文件名称前的 “ / ” 号; -N <日期格式> 或 –newer=<日期时间> :只将较指定日期更新的文件保存到备份文件里; –exclude=<范本样式> :排除符合范本样式的文件; –delete :删除包中文件; –strip-components :去除目录; –add-file :向包中添加文件; –remove-files :打包后删除源文件。 |
1 、归档 tar 包,不压缩:
tar -cvf test.tar test1.log test2.log # 归档多个文件 tar -cvf test.tar test/* # 归档 test 目录下所有文件 tar -cvf test.tar *.log # 归档所有以 .log 结尾的文件
由于这种方式不会进行压缩,仅做了归档,因此速度极快,同时占用空间也较大。
2 、归档并压缩为 tar.gz 或 tar.bz2 :
这种方式打包对文件进行了压缩:
tar -zcvf test.tar.gz file1 file2 # 打包,并以 gzip 压缩 tar -jcvf test.tar.bz2 file1 file2 # 打包,并以 bzip2 压缩
3 、查看压缩包中的文件:
如果不想解压,只是想查看压缩包中的文件内容,可以使用 -t 参数:
tar -tvf test.tar # 可查看 test 包中有哪些文件
4 、打包后删除源文件:
有时候在打包后可能需要删除源文件,但一个个删除显得麻烦,我们可以使用 –remove-files 选项:
tar -zcvf test.tar.gz test.log --remove-files
5 、打包除指定目录或文件以外的文件:
对于某些目录下的文件,可能只需要打包部分文件,因此可以使用 –exclude 选项排除一些不需要打包的文件:
tar -zcvf test.tar.gz --exclude=test/*.log test/* # 打包 test 目录下所有文件,排除以 .log 结尾的文件
这里用到了 –exclude 选项,支持通配符和正则表达式,因此也非常强大。
6 、向压缩包中更新文件:
例如,压缩包中已经打入了 test 以及其他文件,现在你只想更新压缩包中的 test 文件,那么你可以使用 –add-file 选项:
tar -tf test.tar --add-file=test # 只针对 tar 包
7 、向 tar 包中增加文件:
向 tar 包中增加文件可使用 -r 参数:
tar -rf test.tar testfile # 在 test.tar 包中增加文件,只针对 tar 包
8 、删除压缩包中的文件:
在不解压的情况下,可使用 –delete 选项删除包中的文件:
tar --delete -f test.tar test1 # 从 test.tar 中删除 test1 文件
tar 命令(解压):
1 、解压 tar.gz 和 tar 包到当前目录:
tar -xvf test.tar.gz tar -xvf test.tar
2 、解压到指定目录:
tar -xvf test.tar.gz -C dir tar -xvf test.tar -C dir
3 、解压包中指定的文件:
例如 test.tar.gz 包中文件情况如下:
1.txt log/ log/1.log log/2.log log/2.log log/4.log log/5.log
如果我们只需要解压出 log 目录下的 1.log ,只需要执行下面的命令:
tar -xvf test.tar.gz log/1.log tar -xvf test.tar.gz log/1.log -C test # 将 1.log 解压到 test 目录
4 、解压时去掉目录结构:
压缩包中的文件可能存在多级目录,常规方式解压出来后,对应目录也会存在。如果只想要压缩包的文件,可以去掉目录结构(注意:同一文件夹下文件名不能重):
tar -xvf test.tar.gz --strip-components=1 # 去掉一层目录
5 、解压时不覆盖原文件:
当前目录可能已经存在包中的文件,如果不想解压出来的文件覆盖当前已存在的文件,可使用 -k 参数(会抛出错误信息):
tar -xvkf test.tar.gz
6 、特别提醒:
前面所提到的解压或者压缩带的 f 参数需要放在最后,因为它指定了压缩包名字,否则会出现解压或压缩失败。
zip 命令(压缩):
zip 和 unzip 命令主要用于处理 zip 包。
涉及参数说明:
选项:
-A :调整可执行的自动解压缩文件; |
1 、压缩文件:
zip -r test.zip test/ # 打包 test 目录下的文件 zip -rj test.zip test/ # 打包 test 目录下的文件,且压缩包不带 test 目录
2 、指定压缩率打包文件:
zip -r8 test.zip test/* # 数值( 1 - 9 )越大,压缩率越高,耗时越长
3 、打包符号链接文件:
前面的命令只能打包普通文件,如果想要打包符号链接文件,则需要使用参数 -y :
zip -ry test.zip test
4 、向压缩包中增加或更新文件:
有时候需要向压缩包中增加文件,但又不想重新解压打包,可以使用参数 -u :
zip -u test.zip test2 # 向 test.zip 包中增加 test2 文件
5 、压缩时加密:
压缩时如果需要对压缩包进行加密,可使用 -P 参数:
zip -r test.zip test1 test -P 66666 # 使用密码 66666 加密
6 、删除压缩包的特定文件:
zip -d test.zip test # 删除 test.zip 包中的 test 文件
unzip 命令(解压):
涉及参数说明:
选项:
-c :将解压缩的结果显示到屏幕上,并对字符做适当的转换; |
1 、解压压缩包:
unzip test.zip -d dir # 将 test.zip 解压到 dir 目录 unzip -o test.zip -d dir # 将 test.zip 解压到 dir 目录,且直接覆盖原有的文件 unzip -n test.zip -d dir # 将 test.zip 解压到 dir 目录,如果已有相同的文件存在,不要覆盖原有的文件
2 、解压包中指定的文件:
如果不知道需要解压的文件名,可先查看包中的文件,然后使用下面的方法:
unzip -o test.zip "1.log" -d dir # 解压包中的 1.log 文件到 dir 目录 unzip -o test.zip "*.log" -d dir # 解压包中所有的 log 文件
3 、查看压缩包中的文件信息:
unzip -l test.zip # 可以看到压缩包中的文件名,日期等信息
unzip -v test.zip # 查看更多信息,例如 CRC 校验信息等
示例:
[root@host temp]$ unzip -v test.zip
Archive: test.zip
Length Method Size Ratio Date Time CRC-32 Name
-------- ------ ------- ----- ---- ---- ------ ----
3 Stored 3 0% 11-08-17 09:53 5fc0d40c 1.txt
3 Stored 3 0% 11-08-17 09:53 d74debda 2.txt
4 Stored 4 0% 11-08-17 09:53 5a82fd08 3.txt
-------- ------- --- -------
10 10 0% 3 files
4 、同时解压多个 zip 文件:
同时解压当前文件夹下的 abc12.zip 、abc23.zip 、abc34.zip :
unzip abc\*.zip
5 、解压时去掉目录结构:
压缩包中有多层目录结构,普通解压仍然会保留目录结构,如果只想要压缩包中的文件,可以使用 -j 参数:
zip -oj test.zip -d ./temp
6 、解压 jar 包:
jar 包是 java 归档包,但同样可用 unzip 解压查看里面的文件:
unzip -o java.jar -d dir
gzip 命令:
涉及参数说明:
-a 或 —— ascii :使用 ASCII 文字模式; -d 或 –decompress 或 —-uncompress :解开压缩文件; -f 或 ——force :强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接; -h 或 ——help :在线帮助; -k :保留源文件; -l 或 ——list :列出压缩文件的相关信息; -L 或 ——license :显示版本与版权信息; -n 或 –no-name :压缩文件时,不保存原来的文件名称及时间戳记; -N 或 ——name :压缩文件时,保存原来的文件名称及时间戳记; -q 或 ——quiet :不显示警告信息; -r 或 ——recursive :递归处理,将指定目录下的所有文件及子目录一并处理; -S 或 <压缩字尾字符串> 或 —-suffix<压缩字尾字符串> :更改压缩字尾字符串; -t 或 ——test :测试压缩文件是否正确无误; -v 或 ——verbose :显示指令执行过程; -V 或 ——version :显示版本信息; -<压缩效率> :压缩效率是一个介于 1 ~ 9 的数值,预设值为 “ 6 ” ,指定愈大的数值,压缩效率就会愈高; –best:此参数的效果和指定 “ -9 ” 参数相同; –fast:此参数的效果和指定 “ -1 ” 参数相同。 |
tar 命令带有 -z 参数,并且打包成 tar.gz 文件时,便调用 gzip 进行了压缩。gzip 对文本的压缩率约有 60 % ~ 70 % ,压缩包文件常以 gz 为后缀。使用 -k 参数保留源文件:
gzip -k ./* # 对当前目录下所有文件进行压缩,每个文件一个 gz 包 gzip -rkv ./* # 递归压缩
查看当前文件夹下每个压缩包的信息,并不解压:
gzip -l *
解压也很简单:
gzip -dv test.gz
bzip2 命令:
tar 命令使用 -j 参数将文件打包为 tar.bz2 时,便调用了 bzip2 进行压缩。bzip2 压缩或解压后,会将源文件删除。如果需要保留源文件,可使用 -k 参数:
bzip2 -zk test # 压缩 test 文件 bzip2 -dk test.bz2 # 解压
rar / unrar 命令:
rar 和 unrar 命令并非 Linux 发行版自带命令,需要另外安装。常见用法如下:
rar a test.tar test # 将 test 文件压缩为 test.rar rar e test.rar # 解压 test.rar unrar x test.rar # 解压 test.rar
压缩率比较:
压缩率一般来说:tar.bz2 > tar.gz > zip > tar
压缩率越高,压缩以及解压的时间也就越长。
总结:
对文件进行压缩能够节省磁盘空间,进行网络传输时,也能节省带宽,但是需要注意的是,空间和时间是需要根据实际应用进行权衡的。解压缩命令较多,为避免在其他平台使用不便,可选择常用命令进行压缩文件。有任何补充或建议,欢迎留言。
参考自:
- http://man.linuxde.net/
- https://www.huyanbing.me/2018/10/19/64149.html
发表评论?