linux tar压缩gzip,Linux常用命令:解压缩tar/zip/gzip

2018-12-22

1381 次阅读

打包和压缩与解压缩是我们在使用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

```

如果您对此页面有任何问题或建议,请在本站留言,或联系邮箱me[at]zkk.me

本网站部分内容转载自其他网站,如有侵权,请立即联系站长进行修改

你可能感兴趣的:(linux,tar压缩gzip)