Linux常用命令:解压缩tar/zip/gzip 2018-12-22 前进路上 暂无评论 2910 次阅读 本文发布于2018-12-22, 文章内容或资源可能已经失效,仅供参考,谢谢。 打包和压缩与解压缩是我们在使用Linux系统中经常要进行的操作,这篇文章记录以下Linux常用打包压缩命令tar、zip、gzip、bzip2的使用方法 ## tar tar是一种打包命令,可以将多个文件或目录打包成一个文件,同时还可以通过gzip/bzip2的支持,将该文件进行压缩。 - 参数说明 ```shell [root@www ~]# tar [-j|-z][cv][-f 新建的文件名] filename... <==打包与压缩 [root@www ~]# tar [-j|-z][tv][-f 新建的文件名] <==查看文件名 [root@www ~]# tar [-j|-z][xv][-f 新建的文件名] [-C 目录] <==解压缩 参数 -c :建立打包档案,可搭配-v 来察看过程中被打包的档名(filename) -t :察看打包档案的内容含有哪些档名,重点在察看『档名』就是了; -x :解打包或解压缩的功能,可以搭配-C (大写) 在特定目录解开 特别留意的是, -c, -t, -x 不可同时出现在一串指令列中。 -z :透过gzip 的支援进行压缩/解压缩:此时档名最好为*.tar.gz -j :透过bzip2 的支援进行压缩/解压缩:此时档名最好为*.tar.bz2 -J :透过xz 的支援进行压缩/解压缩:此时档名最好为*.tar.xz 特别留意, -z, -j, -J 不可以同时出现在一串指令列中 -v :在压缩/解压缩的过程中,将正在处理的档名显示出来! -f filename:-f 后面要立刻接要被处理的档名!建议-f 单独写一个选项(不易忘记) -C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。 其他会使用到的选项介绍: --exclude=FILE:在压缩的过程中,不要将FILE 打包! ``` - 打包 打包一个或多个文件到一个tar包,不进行压缩 ```shell #打包test1.txt和test2.txt为test.tar tar -cvf test.tar test1.txt test2.txt #打包test目录下所有文件 tar -cvf test.tar test/* #打包当前目录下所有以.log结尾的文件 tar -cvf test.tar *.log ``` - 打包并压缩 对一个或多个文件打包并压缩 ```shell #打包flle1和file2,并以gzip压缩 tar -zcvf test.tar.gz file1 file2 #打包file1和file2,并以bzip2压缩 tar -jcvf test.tar.bz2 file1 file2 ``` - 查看打包中的文件 如果不想解压,只是想查看压缩包中的文件内容,可以使用-t参数 ```shell #可查看test包中有哪些文件 tar -tvf test.tar ``` - 打包后删除源文件 ```shell tar -zcvf test.tar.gz test.log --remove-files ``` - 向tar包中增加文件 ```shell #在test.tar包中增加文件file,只针对tar包 tar -rf test.tar file ``` - 打包除指定目录或文件以外的文件 ```shell #打包test目录下所有文件,排除以.log结尾的文件 tar -zcvf test.tar.gz --exclude=test/*.log test/* ``` - 删除压缩包中的文件 在不解压的情况下,可使用–delete选项删除包中的文件 ```shell #从test.tar中删除test1文件 tar --delete -f test.tar test1 ``` - 解压缩 解压tar.gz\tar\tar.bz2包到当前目录 ```shell tar -zxvf test.tar.gz tar -xvf test.tar tar -jxvf test.tar.bz2 ``` 解压tar.gz\tar\tar.bz2包到指令目录 ```shell tar -zxvf test.tar.gz [-C 指定目录] tar -xvf test.tar [-C 指定目录] tar -jxvf test.tar.bz2 [-C 指定目录] ``` - 解压包中指定的文件 例如test.tar.gz中有以下文件 ``` hello.txt log/ log/1.log log/2.log log/3.log log/4.log log/5.log ``` 如果要解压其中的1.log ```shell tar -zxvf test.tar.gz log/1.log ``` ## zip/unzip zip和unzip指令用于处理.zip文件 - zip参数 ```shell -d :从压缩文件内删除指定的文件。 -f :此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。 -j :只保存文件名称及其内容,而不存放任何目录名称。 -r :递归处理,将指定目录下的所有文件和子目录一并处理。 -u :更换较新的文件到压缩文件内。 -v :显示指令执行过程或显示版本信息。 - <压缩效率> 压缩效率是一个介于1-9的数值。 ``` - 压缩 ```shell #打包test目录下的文件 zip -r test.zip test #打包test目录下文件,且压缩包不带test目录 zip -rj test.zip test ``` - 指定压缩率压缩文件 ```shell #数值(1-9)越大,压缩率越高,耗时越长 zip -r8 test.zip test ``` - 向压缩包中增加文件 有时候需要向压缩包中增加文件,但又不想重新解压打包,可以使用参数-u ```shell #向test.zip 包中增加test1文件 zip -u test.zip test1 ``` - 压缩时加密 压缩时如果需要对压缩包进行加密,可使用-P参数 ```shell #使用密码123456加密 zip -r test.zip test1 test -P 123456 ``` - 删除压缩包中特定文件 ```shell #删除test.zip包中的file1文件 zip -d test.zip file1 ``` - unzip参数 ```shell -l :显示压缩文件内所包含的文件 -j :只保存文件名称及其内容,而不存放任何目录名称。 -o :以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该 -v :显示指令执行过程或显示版本信息。 -d :指定解压目录,目录不存在会创建 ``` - 解压 ```shell #把test.zip解压到dir目录 unzip test.zip -d dir unzip java.jar -d dir ``` - 查看压缩包中的文件 ```shell #可以看到压缩包中的文件名,日期等信息 unzip -l test.zip #查看更多信息,例如crc校验信息等 unzip -v test.zip ``` ## gzip - 参数 ```shell -k :保留源文件 -d :解开压缩文件 -r :递归处理,将指定目录下的所有文件及子目录一并处理 -v :显示指令执行过程 ``` tar命令带有-z参数,并且打包成tar.gz文件时,便调用gzip进行了压缩 - 压缩 ```shell #当前目录下所有文件进行压缩,每个文件一个gz包 gzip -k ./* #递归压缩 gzip -rkv ./* ``` - 解压 ```shell gzip -dv test.gz ``` ## bzip2 tar命令使用-j参数将文件打包为tar.bz2时,便调用了bzip2进行压缩。bzip2压缩或解压后,会将源文件删除。如果需要保留源文件,可使用-k参数 - 压缩与解压 ```shell #压缩test文件 bzip2 -zk test #解压 bzip2 -dk test.bz2 ``` 标签: linux 如果您对此页面有任何问题或建议,请在本站留言,或联系邮箱me[at]zkk.me本网站部分内容转载自其他网站,如有侵权,请联系博主