linux压缩打包命令之gzip&tar

先说结论

gzip只能对文件进行压缩和解压,不能进行打包
tar可以对文件进行打包解包 还能对打包后的文件进行压缩解压缩
一般情况下不会单独使用gzip用tar命令就够了

  • 用tar打压缩包 tar -czf xxx.tar.gz 要打包的文件 -v视情况加或不加
  • 用tar看压缩包 tar -tf xxx.tar.gz -z省略 -v视情况加或不加
  • 用tar解压缩包 tar -xf xx.tar.gz -C 要解压的位置-z省略 -v视情况加或不加

gzip

格式

gzip [OPTION]... [FILE]... []表示可选 ...表示可重复

作用

把指定的文件进行压缩或者解压缩

选项

  • -d, --decompress 解压缩
  • -l, --list 显示压缩文件的详细信息
  • -r, --recursive 对文件夹中的内容递归进行压缩或者解压缩
  • -v, --verbose 显示压缩或者解压缩详细过程

举例

实验环境

[root@centos76 data]# tree
.
├── a.txt
├── b.txt
├── c.txt
└── dir1
    ├── 1.txt
    ├── 2.txt
    └── 3.txt

压缩单个文件

默认情况下不加选项 gzip是进行压缩操作 加上-v显示详细过程

[root@centos76 data]# gzip -v a.txt
a.txt:   80.2% -- replaced with a.txt.gz
[root@centos76 data]# ll
总用量 12
-rw-r--r--. 1 root root 40 07/29 05:52 a.txt.gz
-rw-r--r--. 1 root root 79 07/29 05:52 b.txt
-rw-r--r--. 1 root root 80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root 45 07/29 06:04 dir1

对a.txt进行压缩,压缩后会把a.txt文件转换为a.txt.gz文件 a.txt.gz文件占用的空间更小
注意压缩后源文件会消失

显示压缩文件详情

-l选项可以查看压缩文件的详情 注意不能用于查看普通文件

[root@centos76 data]# gzip -l a.txt.gz 
         compressed        uncompressed  ratio uncompressed_name
                 40                  81  80.2% a.txt

解压缩单个文件

-d选项用于解压缩 加上-v显示解压过程

[root@centos76 data]# gzip -dv a.txt.gz 
a.txt.gz:    80.2% -- replaced with a.txt
[root@centos76 data]# ll
总用量 12
-rw-r--r--. 1 root root 81 07/29 05:52 a.txt
-rw-r--r--. 1 root root 79 07/29 05:52 b.txt
-rw-r--r--. 1 root root 80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root 45 07/29 06:04 dir1

压缩解压缩多个文件

gzip 可以同时压缩解压缩多个文件 但是是分别对每一个文件进行压缩解压缩

[root@centos76 data]# gzip -v ./*
./a.txt:     80.2% -- replaced with ./a.txt.gz
./b.txt:     78.5% -- replaced with ./b.txt.gz
./c.txt:     83.8% -- replaced with ./c.txt.gz
gzip: ./dir1 is a directory -- ignored
[root@centos76 data]# ll
总用量 12
-rw-r--r--. 1 root root 40 07/29 05:52 a.txt.gz
-rw-r--r--. 1 root root 41 07/29 05:52 b.txt.gz
-rw-r--r--. 1 root root 37 07/29 05:53 c.txt.gz
drwxr-xr-x. 2 root root 45 07/29 06:04 dir1
[root@centos76 data]# gzip -dv ./*
./a.txt.gz:  80.2% -- replaced with ./a.txt
./b.txt.gz:  78.5% -- replaced with ./b.txt
./c.txt.gz:  83.8% -- replaced with ./c.txt
gzip: ./dir1 is a directory -- ignored
[root@centos76 data]# ll
总用量 12
-rw-r--r--. 1 root root 81 07/29 05:52 a.txt
-rw-r--r--. 1 root root 79 07/29 05:52 b.txt
-rw-r--r--. 1 root root 80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root 45 07/29 06:04 dir1

看上面的例子可知

  • 压缩多个文件的时候,并不会有打包操作,而是对每个文件单独压缩
  • 遇到目录的时候会忽略

递归的压缩解压缩

如果需要对文件夹、子文件夹中的内容进行递归的操作 加上-r参数即可

[root@centos76 data]# gzip -rv ./*
./a.txt:     80.2% -- replaced with ./a.txt.gz
./b.txt:     78.5% -- replaced with ./b.txt.gz
./c.txt:     83.8% -- replaced with ./c.txt.gz
./dir1/1.txt:     0.0% -- replaced with ./dir1/1.txt.gz
./dir1/2.txt:     0.0% -- replaced with ./dir1/2.txt.gz
./dir1/3.txt:     0.0% -- replaced with ./dir1/3.txt.gz
[root@centos76 data]# gzip -drv ./*
./a.txt.gz:  80.2% -- replaced with ./a.txt
./b.txt.gz:  78.5% -- replaced with ./b.txt
./c.txt.gz:  83.8% -- replaced with ./c.txt
./dir1/1.txt.gz:      0.0% -- replaced with ./dir1/1.txt
./dir1/2.txt.gz:      0.0% -- replaced with ./dir1/2.txt
./dir1/3.txt.gz:      0.0% -- replaced with ./dir1/3.txt

tar

格式

tar [OPTION]... [FILE]... []表示可选 ...表示可重复

作用

把指定的文件进行打包或者解包

选项

  • -c, --create 打包
  • -x, --extract, --get 解包
  • -t, --list 列出包中内容
  • -v, --verbose 显示压缩或者解压缩详细过程
  • -f, --file=ARCHIVE 指定包的名称
  • -j, --bzip2 通过 bzip2 压缩包
  • -z, --gzip, --gunzip, --ungzip 通过 gzip 压缩包
  • -C, --directory=DIR 改变解压路径

举例

打包

-c打包 -f指定包的名字 规范是xxx.tar
注意打包后源文件不会消失

[root@centos76 data]# tar -cf package.tar ./*
[root@centos76 data]# ll
总用量 24
-rw-r--r--. 1 root root    81 07/29 05:52 a.txt
-rw-r--r--. 1 root root    79 07/29 05:52 b.txt
-rw-r--r--. 1 root root    80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root    45 07/29 06:21 dir1
-rw-r--r--. 1 root root 10240 07/29 06:37 package.tar

查看包中的内容

-t 查看包中的内容 -f指定包名 加上-v信息更完整

[root@centos76 data]# tar -tf package.tar 
./a.txt
./b.txt
./c.txt
./dir1/
./dir1/1.txt
./dir1/2.txt
./dir1/3.txt
[root@centos76 data]# tar -tvf package.tar 
-rw-r--r-- root/root        81 2022-07-29 05:52 ./a.txt
-rw-r--r-- root/root        79 2022-07-29 05:52 ./b.txt
-rw-r--r-- root/root        80 2022-07-29 05:53 ./c.txt
drwxr-xr-x root/root         0 2022-07-29 06:21 ./dir1/
-rw-r--r-- root/root         0 2022-07-29 06:04 ./dir1/1.txt
-rw-r--r-- root/root         0 2022-07-29 06:04 ./dir1/2.txt
-rw-r--r-- root/root         0 2022-07-29 06:04 ./dir1/3.txt

解包

-x 解包 -f指定文件名 -v显示过程

# 先把原来的文件删了 只留一个package.tar
[root@centos76 data]# rm -rf *.txt
[root@centos76 data]# rm -rf dir1
[root@centos76 data]# ll
总用量 12
-rw-r--r--. 1 root root 10240 07/29 06:37 package.tar
# 解包
[root@centos76 data]# tar -xvf package.tar 
./a.txt
./b.txt
./c.txt
./dir1/
./dir1/1.txt
./dir1/2.txt
./dir1/3.txt
[root@centos76 data]# ll
总用量 24
-rw-r--r--. 1 root root    81 07/29 05:52 a.txt
-rw-r--r--. 1 root root    79 07/29 05:52 b.txt
-rw-r--r--. 1 root root    80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root    45 07/29 06:21 dir1
-rw-r--r--. 1 root root 10240 07/29 06:37 package.tar

解包后会不会删除包本身

打包并压缩

一般打完包后会对包进行压缩,以节省空间。
可以先用tar打包,再用gzip进行压缩,不过tar可以直接调用gzip,只需要加上-z参数。

# 先把之前的包删了
[root@centos76 data]# rm -rf package.tar 
# 文件名规范 xxx.tar.gz 一目了然,先打包成tar文件,又对tar文件进行压缩,成为gz文件
[root@centos76 data]# tar -czf package.tar.gz ./*
[root@centos76 data]# ll
总用量 16
-rw-r--r--. 1 root root  81 07/29 05:52 a.txt
-rw-r--r--. 1 root root  79 07/29 05:52 b.txt
-rw-r--r--. 1 root root  80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root  45 07/29 06:21 dir1
-rw-r--r--. 1 root root 267 07/29 06:54 package.tar.gz

解压缩包

-x 解包 -z表示要解的包压缩过 -f指定文件 -v显示过程

[root@centos76 data]# tar -xzvf package.tar.gz 
./a.txt
./b.txt
./c.txt
./dir1/
./dir1/1.txt
./dir1/2.txt
./dir1/3.txt

其实这里指定z是告诉tar命令要用gzip解压然后再解包,如果不指定的话,tar会自动判断,所以这里-z可以省略,-v根据自己需求加或者不加

解压缩包并指定解压路径

tar默认把包解压到当前目录,加上-C参数就可以指定解压目录

tar -xf package.tar.gz -C /root/data/
[root@centos76 data]# tar -xf package.tar.gz -C /root/data/
[root@centos76 data]# ll
总用量 16
-rw-r--r--. 1 root root  81 07/29 05:52 a.txt
-rw-r--r--. 1 root root  79 07/29 05:52 b.txt
-rw-r--r--. 1 root root  80 07/29 05:53 c.txt
drwxr-xr-x. 2 root root  45 07/29 06:21 dir1
-rw-r--r--. 1 root root 267 07/29 06:54 package.tar.gz

总结

  • 用tar打压缩包 tar -czf xxx.tar.gz 要打包的文件 -v视情况加或不加
  • 用tar看压缩包 tar -tf xxx.tar.gz -z省略 -v视情况加或不加
  • 用tar解压缩包 tar -xf xx.tar.gz -C 要解压的位置-z省略 -v视情况加或不加
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容