压缩解压缩工具(gzip/gunzip、bzip2/bunzip2、zip/unzip、xz)和打包命令(tar)

-----windos可以解压所有linux系统的文件压缩包,但linux不一定能够全部解压windos的------

打包和压缩:

  • 打包是指将一大堆文件或目录变成一个总的文件;
  • 压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
  • Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip
    bzip2命令)。linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。

gzip、gunzip命令

1.用途/注意:

  • gizp命令用来压缩文件,文件格式为*.gz;该命令只能压缩文件,而不能压缩目录,压缩文件会在源文件的文件名后自动添加".gz"。
  • gunzip命令实际上功能和"gzip -d"一样。
  • gzip和gunzip命令不论是压缩还是解压缩文件后,都不保留原文件。

2.命令的使用格式:

注意:gunzip=gzip -d(可以看/sur/bin/gunzip文件)
#gzip [OPTION]… [FILE]…
[OPTION]:
-f或–force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-d:解开压缩文件。
-r或–recursive  递归处理(压缩/解压缩),将指定目录下的所有文件及子目录下的文件…都单独压缩为.gz格式。
-h:在线帮助;
-l或–list:列出压缩文件的相关信息。
-L或–license:显示版本与授权信息。
-n或–no-name  压缩文件时,不保存原来的文件名称及时间戳记。
-N或–name  压缩文件时,保存原来的文件名称及时间戳记。
-t或–test  测试压缩文件是否正确无误。
-v或–verbose  显示指令执行过程。
-V或–version  显示版本信息。
#gunzip [OPTION]… [FILE]…
[OPTION]:
-f或–force:强行解开压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。
-r或–recursive  递归处理,将指定目录下的所有文件及子目录下的文件…一并处理。
-h:在线帮助;
-l或–list:列出压缩文件的相关信息。
-L或–license:显示版本与授权信息。
-n或–no-name  解压缩文件时,不保存原来的文件名称及时间戳记。
-N或–name  解压缩文件时,保存原来的文件名称及时间戳记。
-t或–test  测试压缩文件是否正确无误。
-v或–verbose  显示指令执行过程。
-V或–version  显示版本信息。
查看gzip格式的压缩文件内容:
#zcat a.txt.gz

3.gzip和gunzip实例:

压缩文件a.txt
[root@centos7 test]#ls
a.txt
[root@centos7 test]#gzip  a.txt 
[root@centos7 test]#ls
a.txt.gz

压缩目录testdir目录下的所有子文件
[root@centos7 test]#tree
.
└── testdir
    ├── adir
    │   └── a1.txt
    ├── bdir
    ├── f1.txt
    └── f2.txt

3 directories, 3 files
[root@centos7 test]#gzip -r /root/test/testdir
[root@centos7 test]#tree
.
└── testdir
    ├── adir
    │   └── a1.txt.gz
    ├── bdir
    ├── f1.txt.gz
    └── f2.txt.gz
3 directories, 3 files

解压缩testdir目录下的所有被压缩的以.gz结尾的压缩文件。
[root@centos7 test]#gunzip  -r testdir  //或gizp -dr testdir
[root@centos7 test]#tree
.
└── testdir
    ├── adir
    │   └── a1.txt
    ├── bdir
    ├── f1.txt
    └── f2.txt
3 directories, 3 files

bzip2、bunzip2命令

1.用途、注意:

  • bzip2、bunzip2命令是压缩/解压缩的.bz2文件格式包。只能压缩/解压文件,不能支持目录。
  • bzip2命令是gzip的升级版,都是压缩文件。且非常适合压缩一些大型文件。
  • bzip2、bunzip2命令默认情况下都是压缩/解压缩后删除原始文件。要保留源文件需要加-k参数。
  • bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同

2.命令使用:

#bzip2 [options] FILENAME
[options]:
-f或–force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,命令会执行失败,默认不会覆盖现有文件。若要覆盖,请使用此参数。
-k或–keep:bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。
-t或–test:测试.bz2压缩文件的完整性。
-v或–verbose:压缩或解压缩文件时,显示详细的信息。
-压缩等级(-1~-9):在压缩时将块长度设为 100 k、200 k … 900 k,一般来说等级9的压缩比最大,默认是等级9。对解压缩没有影响。
-d:强制解压缩==bunzip2
#bunzip2 [options] FILENAME.bz2
-f或–force:解压缩时,若输出文件与现有文件同名,命令会执行失败,默认不会覆盖现有文件。若要覆盖,请使用此参数。
-k或–keep:在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数。
-s或–small:降低程序执行时,内存的使用量。
-v或–verbose:解压缩文件时,显示详细的信息。
-L,–license,-V或–version:显示版本信息。

3.bzip2和bunzip2实例:

将f1.txt文件压缩为.bz2格式,同时保留原文件。
[root@centos7 testdir]#ls
adir  bdir  f1.txt
[root@centos7 testdir]#bzip2 -k f1.txt 
[root@centos7 testdir]#ls
adir  bdir  f1.txt  f1.txt.bz2

将f1.txt.bz2文件解压缩,同时覆盖掉原有文件,且保留压缩文件
[root@centos7 testdir]#cat f1.txt
wad
[root@centos7 testdir]#bunzip2 -fk f1.txt.bz2  //等同于#bzip2 -dfk f1.txt.bz2
[root@centos7 testdir]#ls
adir  bdir  f1.txt  f1.txt.bz2  f2.txt  f3.txt
[root@centos7 testdir]#cat f1.txt
awdada

将等大小文件f2.txt和文件f3.txt安装等级1和9,分别压缩,且保留原文件。
[root@centos7 testdir]#ll -h
total 246M
drwxr-xr-x 2 root root   52 Mar 29 17:41 adir
drwxr-xr-x 2 root root    6 Mar 29 17:01 bdir
-rw-r--r-- 1 root root 123M Mar 30 14:58 f2.txt
-rw-r--r-- 1 root root 123M Mar 30 14:54 f3.txt
[root@centos7 testdir]#bzip2 -1k f2.txt 
[root@centos7 testdir]#bzip2 -9k f3.txt 
[root@centos7 testdir]#ll -h
total 246M
drwxr-xr-x 2 root root   52 Mar 29 17:41 adir
drwxr-xr-x 2 root root    6 Mar 29 17:01 bdir
-rw-r--r-- 1 root root 123M Mar 30 14:58 f2.txt
-rw-r--r-- 1 root root  820 Mar 30 14:58 f2.txt.bz2
-rw-r--r-- 1 root root 123M Mar 30 14:54 f3.txt
-rw-r--r-- 1 root root  114 Mar 30 14:54 f3.txt.bz2
[root@centos7 testdir]#file f2.txt.bz2 
f2.txt.bz2: bzip2 compressed data, block size = 100k
[root@centos7 testdir]#file f3.txt.bz2 
f3.txt.bz2: bzip2 compressed data, block size = 900k

zip、unzip命令

1.用途、注意:

  • zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。
  • unzip为.zip压缩文件的解压缩程序。
  • 该命令可以压缩或解压缩.zip的目录以及文件。
  • .zip压缩文件在linux和windwos中是通用的。
  • 默认情况下压缩/解压缩后会保留原文件;压缩目录需加 -r。

2.命令的使用格式:

zip命令格式:#zip [-options] [-b path] [-t yyyy-mm-dd] [-n suffixes] [zipfile list] [-xi list]
[options]:
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-q 不显示指令执行过程。
-m 把原文件移到压缩文件中并删除原文件。(即将原文件压缩后,并将原文件加入到压缩文件中,同时删除原始文件。)
-d 从压缩文件内删除指定的文件。
-h 在线帮助。
-L 显示版权信息。
-T 检查压缩文件内的每个文件是否正确无误。
-v 显示指令执行过程或显示版本信息。
-z 替压缩文件加上注释(只加参数即可,注释在命令回车后添加)。
unzip命令格式:#unzip [-Z] [-options]] file[.zip] [list] [-x xlist] [-d exdir]
[options]
-l 显示压缩文件内所包含的文件。
-v 执行是时显示详细的信息。
-z 仅显示压缩文件的备注文字。

3.zip、unzip实例:

压缩f1.txt文件
[root@centos7 testdir]#ls
adir  bdir  f1.txt  f2.txt
[root@centos7 testdir]#zip f1.txt.zip  f1.txt 
  adding: f1.txt (stored 0%)
[root@centos7 testdir]#ls
adir  bdir  f1.txt  f1.txt.zip  f2.txt

解压缩f1.txt.zip文件
[root@centos7 adir]#ls
a1.txt  f1.txt.zip
[root@centos7 adir]#unzip f1.txt.zip 
Archive:  f1.txt.zip
 extracting: f1.txt                  
[root@centos7 adir]#ls
a1.txt  f1.txt  f1.txt.zip

将目录testdir2压缩为testdir2.gz
[root@centos7 data]#ls
testdir  testdir2
[root@centos7 data]#zip -r testdir2.zip  testdir2
  adding: testdir2/ (stored 0%)
  adding: testdir2/w/ (stored 0%)
  adding: testdir2/adwa (stored 0%)
[root@centos7 data]#ls
testdir  testdir2  testdir2.zip
[root@centos7 data]#unzip -l testdir2.zip 
Archive:  testdir2.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  03-29-2020 18:21   testdir2/
        0  03-29-2020 18:21   testdir2/w/
        0  03-29-2020 18:21   testdir2/adwa
---------                     -------
        0                     3 files

压缩f1.txt,并添加注释"this  is a file"
[root@centos7 testdir]#zip -z f1.txt.zip  f1.txt 
  adding: f1.txt (stored 0%)
enter new zip file comment (end with .):
this is a file
[root@centos7 testdir]#rm -rf f1.txt
[root@centos7 testdir]#ls
adir  bdir  f1.txt.zip
[root@centos7 testdir]#unzip -z f1.txt.zip 
Archive:  f1.txt.zip
this is a file

xz命令:

1.用途、注意:

  • xz命令用来压缩/解压缩.xz格式的文件。
  • xz在压缩/解压时,默认情况下是不保留原文件的。

2.使用格式:

#xz [OPTION]… [FILE]…
[option]:
-z:强制压缩
-d:强制解压缩
-t:测试压缩文件的完整性
-l:列出关于.xz文件的消息
-k:压缩/解压缩时保留不删除原文件。
-f:在压缩/解压缩时,强制覆盖同名文件。
-等级:(-0~-9),默认是等级6, 且在使用等级7-9之前,压缩/解压缩的内存使用量已被考虑在内。
-v:压缩/解压缩时显示过程信息
-q:静默模式
-Tnum,最多使用num个线程,默认值是1。

3.xz命令使用实例:

将f2.txt文件压缩为.xz格式,并查看该压缩包的信息。
[root@centos7 testdir]#ls
adir  bdir  f2.txt  f3.txt
[root@centos7 testdir]#xz f2.txt 
[root@centos7 testdir]#ls
adir  bdir  f2.txt.xz  f3.txt
[root@centos7 testdir]#file f2.txt.xz 
f2.txt.xz: XZ compressed data
[root@centos7 testdir]#xz -l f2.txt.xz 
Strms  Blocks   Compressed Uncompressed  Ratio  Check   Filename
    1       1     18.4 KiB    122.6 MiB  0.000  CRC64   f2.txt.xz


解压缩f2.txt.xz文件,显示解压缩过程,并保留压缩包。
[root@centos7 testdir]#ls
adir  bdir  f2.txt.xz  f3.txt
[root@centos7 testdir]#xz -dkv f2.txt.xz 
[root@centos7 testdir]#ls
adir  bdir  f2.txt  f2.txt.xz  f3.txt

tar命令:

1.用途、注意:

  • tar命令先将文件或目录打包成.tar格式的包,然后用压缩程序(gzip,bzip2等命令)压缩成.tar.gz,.tar.bz2等格式的压缩包。
  • tar本身不具有压缩功能,但用来压缩和解压文件,它是可以是通过调用其他程序的压缩功能实现的。
  • tar命令默认情况下打包/压缩/解压缩后,源文件保留。
  • 如果打包当前目录下所有文件,tar是不打包隐藏文件的,直接打包本目录,就打包隐藏文件了。

2.命令格式:

#tar [option…] [File]…
【option:】
-c:创建压缩文件。
-x:解压缩文件。
-f:目标文件名,即压缩包名(注意:f参数要放到参数最后,后跟压缩包名,压缩包名字是随便起的,但一般按照格式来,便于辨认)。
-z:使用gzip压缩或解压,生成/解压缩.tar.gz格式的文件。
-j:使用bzip2格式压缩或解压,生成/解压缩.tar.bz2格式的文件。
-J:使用xz格式压缩或解压,生成/解压缩.tar.xz格式的文件。
-Z:将打包后的文件用compress压缩,格式为.tar.Z。
-t:查看压缩包内有哪些文件,需要与-f参数一起使用。
-v:显示压缩或解压缩的过程。
-C:指定解压缩后的文件所在的目录
-p:压缩/解压缩时保留原来的权限。
-N “yyyy/mm/dd”:在文件夹中,比某个日期新的文件才备份(同时目录下的子目录会自动打包备份,不看子目录日期,因为子目录内可能存有所需日期的文件)。
-T:打包指定文件中包含的文件(绝对路径)。
“- - exclude 文件”:创建压缩文件时,排除指定的文件或目录。
-A:新增tar打包文件到已存在的打包文件内。
-r:新增文件到已经打包的文件内。
-u:只附加比打包文件中新的文件。
“- - delete 文件”:删除tar包中的某文件。

  • 使用–delete、-u、-r、-A的时候,后面跟的备份文件都必须为未压缩的,若备份文件已经压缩,需要使用gunzip先解压,操作完后再gzip;也就是说,不能对tar.gz、tar.bz2等文件直接操作的;

3.tar命令实例:

运用tar命令将adir目录打包,打包后名称为adir.tar
[root@centos7 data]#ls
adir  testdir  testdir2  testdir2.zip
[root@centos7 data]#tar -cf adir.tar adir  
[root@centos7 data]#ls
adir  adir.tar  testdir  testdir2  testdir2.zip

将adir目录打包后压缩为.gz格式的压缩包。
[root@centos7 data]#ls
adir  testdir  testdir2  testdir2.zip
[root@centos7 data]#tar -czvf adir.tar.gz adir/
adir/
adir/a1.txt
adir/f1.txt.zip
adir/f1.txt
adir/tar
adir/b1.txt
[root@centos7 data]#ls
adir  adir.tar.gz  testdir  testdir2  testdir2.zip

查看adir.tar.gz压缩包内的文件
[root@centos7 data]#tar -tf adir.tar.gz 
adir/
adir/a1.txt
adir/f1.txt.zip
adir/f1.txt
adir/tar
adir/b1.txt

向testdit.tar包中新增文件test.txt
[root@centos7 test]#ls
testdir  testdir1  testdir.tar  test.txt
[root@centos7 test]#tar -r test.txt  -f testdir.tar 
[root@centos7 test]#tar -tf testdir.tar 
testdir/
testdir/adir/
testdir/adir/a1.txt
testdir/adir/f1.txt.zip
testdir/adir/f1.txt
test.txt

将book.txt.tar包添加到testdir.tar包中
[root@centos7 test]#ls
book.txt  book.txt.tar  testdir  testdir.tar
[root@centos7 test]#tar -A book.txt.tar  -f testdir.tar 
[root@centos7 test]#tar -tf testdir.tar  //tar包添加进来后,会恢复成相应文件和目录
testdir/
testdir/adir1/
testdir/adir2/
testdir/a.txt
testdir/book2.txt
book1.txt

删除testdt.tar包中的book2.txt文件
[root@centos7 test]#tar --delete testdir/book2.txt -f testdir.tar 
[root@centos7 test]#tar -tf testdir.tar 
testdir/
testdir/adir1/
testdir/adir2/
testdir/a.txt
book1.txt

删除file.tar包中的.a22.sh隐藏文件。
[root@centos7 test]#tar -tf file.tar 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/.a22.sh
testdir2/-.
[root@centos7 test]#tar --delete testdir2/.a22.sh -f file.tar 
[root@centos7 test]#tar -tf file.tar 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/-.


备份压缩/root/test/testdir目录下比2020年4月2日新的文件。
[root@centos7 testdir]#ll
total 0
drwxr-xr-x 2 root root 20 Apr  4 10:54 adir1
drwxr-xr-x 2 root root  6 Mar 30 17:00 adir2
-rw-r--r-- 1 root root  0 Mar 30 17:00 a.txt
-rw-r--r-- 1 root root  0 Mar 30 17:10 b.txt
-rw-r--r-- 1 root root  0 Apr  4 10:49 new.sh
[root@centos7 testdir]#ll adir1/
total 0
-rw-r--r-- 1 root root 0 Apr  4 10:54 qq.txt
[root@centos7 testdir]#cd ..
[root@centos7 test]#tar -N '2020/04/03' -czvf testdir.tar.gz  testdir
tar: Option --after-date: Treating date `2020/04/03' as 2020-04-03 00:00:00
testdir/
testdir/adir1/
testdir/adir1/qq.txt
testdir/adir2/
tar: testdir/a.txt: file is unchanged; not dumped
tar: testdir/b.txt: file is unchanged; not dumped
testdir/new.sh
[root@centos7 test]#tar -tf testdir.tar.gz 
testdir/
testdir/adir1/
testdir/adir1/qq.txt
testdir/adir2/
testdir/new.sh

将/home和/data目录的所有东西都打包压缩成.gz格式,除/home/bash目录;
[root@centos7 home]#tar -zcvf myfile.tar.gz /home/* /data --exclude /home/bash

查找/root/test/testdir目录下以.sh和.txt结尾的文件,并打包压缩成file.tar.gz
方法一:
[root@centos7 test]#find testdir/  -name "*.txt" -o -name "*.sh" >list.txt
[root@centos7 test]#cat list.txt 
testdir/adir1/qq.txt
testdir/a.txt
testdir/b.txt
testdir/new.sh
[root@centos7 test]#tar -zcvf file.tar.gz -T /root/test/list.txt 
testdir/adir1/qq.txt
testdir/a.txt
testdir/b.txt
testdir/new.sh
方法二:
[root@centos7 test]#find testdir/  -name "*.txt" -o -name "*.sh" 
testdir/adir1/qq.txt
testdir/a.txt
testdir/b.txt
testdir/new.sh
[root@centos7 test]#find testdir/  -name "*.txt" -o -name "*.sh" |tar -czvf file.tar.gz -T -
testdir/adir1/qq.txt
testdir/a.txt
testdir/b.txt
testdir/new.sh
[root@centos7 test]#tar -tf file.tar.gz 
testdir/adir1/qq.txt
testdir/a.txt
testdir/b.txt
testdir/new.sh

打包/root/test/testdir2目录下的所有文件(包括隐藏文件),除去testdir2/a.txt文件
(注意:如adir或adir/都指该目录,adir/*指该目录下的所有文件但不包括隐藏文件)
方法一:直接打包目录(推荐直接打包目录,会包含隐藏文件和命名不规范的文件)
[root@centos7 testdir2]#ls -a
-.  .  ..  .a22.sh  a.txt  dir1  dir2
[root@centos7 test]#tar -cvf file.tar testdir2 --exclude testdir2/a.txt 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/.a22.sh
testdir2/-.
[root@centos7 test]#ls
file.tar  testdir  testdir2  testdir.tar.gz
[root@centos7 test]#tar -tf file.tar 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/.a22.sh
testdir2/-.
方法二:将隐藏文件再独自加入到tar包中。
[root@centos7 test]#tar -tf file.tar 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/-.
[root@centos7 test]#ls
file.tar  testdir  testdir2  testdir.tar
[root@centos7 test]#tar -r testdir2/.a22.sh -f file.tar 
[root@centos7 test]#tar -tf file.tar 
testdir2/
testdir2/dir1/
testdir2/dir2/
testdir2/-.
testdir2/.a22.sh

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值