linux学习课程从入门到精通:文件的归档和压缩

本人从事IT行业已有十多年,有着丰富的实战经验,总结了大量的学习方法,更是积累了很多的学习资料,很高兴能在这里跟大家交流学习,希望能在这里跟大家共同进步和成长!

全套学习资料移步至公众号【学神来啦】

本节所讲内容:

  9.1  tar命令进行文件的归档和压缩

  9.2  zip管理压缩文件

  9.3  了解gzip-bzip2- xz管理压缩文件-file-sort查看文件

9.1  tar命令进行文件的归档和压缩

9.1.1  归档和压缩文件

归档和压缩文件的好处:节约硬盘的资源 ,加快文件传输速率

tar命令  作用:打包、压缩文件


这幅图的就是说123456这几个文件打包成了一个a.tar文件,但是这个a.tar还是很大,继续用gzip进行压缩,变成了一个更小的压缩文件。

作用:打包、压缩文件;tar 文件是把几个文件和(或)目录集合在一个文件里,该存档文件可以通过使用gzip、bzip2或xz等压缩工具进行行压缩后传输

查看man tar  这里man不是男人的意思,是manual 手册的缩写

用法:tar [OPTION...] [FILE]...

参数:

-c create创建文件

-x -extract [ˈekstrækt]  提取 解压还原文件

-v --verbose显示执行详细过程

-f --file指定备份文件

-t --list 列出压缩包中包括哪些文件,不解包,查看包中的内容

-C (大写)--directory  指定解压位置

例:给/boot/grub2目录 打包

[root@xuegod63 ~]#  tar -cvf grub.tar /boot/grub2/  # tar的参数前可以不使用‘-’

[root@xuegod63 ~]#  tar cvf grub.tar /boot/grub2/

[root@xuegod63 ~]# tar cf grub.tar /boot/grub2/

tar: 从成员名中删除开头的“/”(就是把/根路径删除掉了,就变成了boot/grub2相对路径了,解压时会解压到当前目录,如果不删除,那就是/boot/grub2,当解压的时候就是绝对路径了,就会覆盖系统中此路径的文件)

[root@xuegod63 ~]# tar -cf grub.tar /boot/grub2/

tar: 从成员名中删除开头的“/”                                     

[root@xuegod63 ~]# ls grub.tar

[root@xuegod63 ~]# tar xvf grub.tar #解压缩

boot/grub2/

boot/grub2/device.map

[root@xuegod63 ~]# ls  boot  #得到boot目录

grub2

例2:把两个目录或目录+文件打包成一个归档包:

[root@xuegod63 ~]# mkdir ./back

[root@xuegod63 ~]# cp /etc/passwd ./back/

[root@xuegod63 ~]# tar -cvf back.tar /boot/grub  /root/back/ /etc/passwd

tar: 从成员名中删除开头的“/”

-rw-r--r-- root/root      1024 2020-06-28 19:46 boot/grub2/grubenv    ###输出内容

-rw-r--r-- root/root      5130 2020-06-28 19:46 boot/grub2/grub.cfg

drwxr-xr-x root/root        0 2020-07-03 14:23 root/back/

-rw-r--r-- root/root      2735 2020-07-03 14:23 root/back/passwd

-rw-r--r-- root/root      2735 2020-06-28 19:49 etc/passwd

例3:不解包,查看tar中的内容:

[root@xuegod63 ~]# tar -tvf back.tar        # List all files in archive.tar verbosely.

例4:对比加v的效果

[root@xuegod63 ~]# tar -xf back.tar

[root@xuegod63 ~]# tar -xvf back.tar

boot/grub/

boot/grub/splash.xpm.gz

9.1.2  tar 归档+压缩

语法:tar czvf newfile.tar.gz SOURCE

语法:tar czvf 压缩后的文件名(tar.gz tar.bz2) 需要压缩的文件或目录

常用参数:

-z, --gzip 以gzip方式压缩  扩展名: tar.gz

-j : 以bz2方式压缩的  扩展名:tar.bz2

-J: 以xz 方式压缩  扩展名:tar.xz

例1:创建.tar.gz 包

[root@xuegod63 ~]# tar cvf /root/etc.tar /etc

[root@localhost test]# tar zcvf /root/etc.tar.gz /etc  #归档,注意备份的名字后缀

[root@localhost test]# tar zxvf /root/etc.tar.gz    #解压缩

[root@localhost test]# tar xvf /root/etc.tar.gz      #解压缩

例2:创建.tar.bz2包

语法: #tar jcvf newfile.tar.bz2  SOURCE

[root@xuegod63 ~]#  tar -jcvf ~/etc.tar.bz2 /etc 

[root@xuegod63 ~]#  tar -jxvf ~/etc.tar.bz2 #解压缩

[root@xuegod63 ~]#  tar -xvf ~/etc.tar.bz2 #解压缩

[root@xuegod63 ~]#  tar jxvf ~/etc.tar.bz2 -C  /opt #解压到opt目录下

例3:创建.tar.xz包

[root@xuegod63 ~]#  tar -Jcvf ~/etc.tar.xz /etc

[root@xuegod63 ~]#  tar -Jxvf ~/etc.tar.xz    #tar.xz 这类包,解压缩

[root@xuegod63 ~]#  tar -xvf ~/etc.tar.xz 

对比三种压缩方式后压缩比例:

[root@xuegod63 ~]# time tar zcf /root/etc.tar.gz /etc

[root@xuegod63 ~]# time tar jcf /root/etc.tar.bz2 /etc

[root@xuegod63 ~]# time tar Jcf /root/etc.tar.xz /etc

[root@xuegod63 ~]# ll -h etc.tar*  (*为通配符,代表任意字符任意次)

-rw-r--r-- 1 0 root  28M 5月  10 12:10 etc.tar

-rw-r--r-- 1 0 root  8.7M 5月  10 12:14 etc.tar.bz2 #常用

-rw-r--r-- 1 0 root  9.8M 5月  10 12:11 etc.tar.gz #常用

-rw-r--r-- 1 0 root  7.0M 5月  10 12:16 etc.tar.xz #这个压缩比例最高,压缩的时间是最长

查看源文件大小

[root@xuegod63 ~]# du -sh /etc

31M /etc

etc.tar包为28M ,实际几乎没怎么压缩。xz格式化为7.0M,传输的时候效率提高很多。

扩展:

解压指定文件到指定目录

[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz boot/grub2/grub.cfg

解压某一类型文件到指定目录

--wildccards 文件名匹配,使用通配符

[root@xuegod62 ~]# tar -tvf boot.tar.gz

[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz --wildcards *.mo

排除指定文件并解压

[root@xuegod62 ~]# rm -rf /opt/boot

[root@xuegod62 ~]# tar -C /opt -xvf boot.tar.gz boot/grub2 --exclude=boot/grub2/i386-pc

9.2  zip管理压缩文件

zip是压缩程序,unzip是解压程序。

例1:压缩文件:

[root@xuegod63 ~]# zip a.zip /etc/passwd 

例2:将所有.jpg文件压缩成一个zip包

[root@xuegod63 ~]# touch {1..4}.jpg

[root@xuegod63 ~]# ls

[root@xuegod63 ~]# zip all.zip *.jpg

例2:压缩一个目录

[root@xuegod63 ~]# zip -r ~/grub.zip /boot/grub2 #一般不用

[root@xuegod63 ~]# tar -czf gurb2.tar.gz /boot/grub2

解压缩:

[root@xuegod63 ~]# unzip ~/grub.zip

[root@xuegod63 ~]# unzip ~/grub.zip -d /opt/ #-d  解压到指定的目标/opt

9.3  了解gzip-bzip2- xz管理压缩文件-file-sort查看文件

Linux中有gzip bzip2 xz等单独的命令,linux中一件事可能有很多种方法能实现,下面的几种方法,tar都能做到,所以必须记住tar的方法,其他方法了解下就可以。

我们创建压缩的TAR存档,TAR命令它支持三种不同的压缩方式。

gzip压缩速度最快;

bzip2压缩生成的文件比gzip小,但使用不如gzip快;

xz压缩工具相对较新,但是会提供最佳的压缩率(速度最慢)

9.3.1  压缩工具

压缩工具:gzip  bzip2  zip xz

常见的压缩格式: .gz  .bz2  .zip  .xz

语法格式:

压缩

gzip 文件  ====》  gzip a.txt  =====》 a.txt.gz

bzip2 文件 ===》 bzip2 b.txt  =====》 b.txt.bz2

xz 文件 ===》xz c.txt ===》c.txt.xz

[root@xuegod63 ~]# mkdir ~/xuegod

[root@xuegod63 ~]# touch  ~/xuegod/a.txt

[root@xuegod63 ~]# gzip ~/xuegod/a.txt

[root@xuegod63 ~]# ls ~/xuegod/

a.txt.gz

注:只能对文件进行压缩,且压缩后源文件会消失,我们很少希望源文件会消失,所以我们一般不用。

(bzip2,xz这两个工具可以通过添加参数-k来保留下源文件)

[root@xuegod63 ~]# cp /etc/passwd ~/1.txt

[root@xuegod63 ~]# bzip2 -k 1.txt

[root@xuegod63 ~]# ls  1.txt.bz2

[root@xuegod63 ~]# xz -k 1.txt

[root@xuegod63 ~]# ls 1.txt.xz

解压:

gzip -d  文件

bzip2 -d  文件 -k 保留源文件

xz -d  文件      -k 保留源文件

例:

[root@xuegod63 ~]# gzip -d xuegod/a.txt.gz

[root@xuegod63 ~]# bzip2 -d 1.txt.bz2

[root@xuegod63 ~]# xz -d 1.txt.xz

9.3.2  file查看文件

file命令

作用: file - determine file type  #确定文件类型

用法: file /etc/passwd

注:linux系统不根据后缀名识别文件类型

[root@xuegod63 ~]# vim song1.mp3  随便输入字符保存

[root@xuegod63 ~]# touch song2.mp3

用file命令查看文件的类型。

[root@xuegod63 ~]# file song1.mp3 song2.mp3

[root@xuegod63 ~]# file /dev/sda

/dev/sda: block special  块特殊设备文件

[root@xuegod63 ~]# file /etc/

/etc/: directory        目录文件

[root@xuegod63 ~]# file /dev/fd

/dev/fd: symbolic link to `/proc/self/fd'  符号链接文件(软链接文件)

[root@xuegod63 ~]# file /etc/passwd

/etc/passwd: ASCII text (ASCII 美国信息交换标准码)

sort 排序

[root@xuegod63 ~]# alias  查看系统中的别名

alias ll='ls -l --color=auto'    所以ll 就等于是 ls -l

[root@xuegod63 ~]# ls –l    -l 显示详细信息

[root@xuegod63 ~]# ls –lt    -t按时间排序

[root@xuegod63 ~]# ls –ltr  -r 从小到大,不加r参数由大到小


[root@xuegod63 ~]# ls -lSr -l 显示详细信息 -S按文件大小排序 -r 从小到大 

[root@xuegod63 ~]# ls -lSrh -l 显示详细信息 -S按文件大小排序 -r 从小到大  ,加-h 参数,看大小,更清楚

[root@xuegod63 ~]# ls -lSh 不加r,从大到小

查看目录:

[root@xuegod63 ~]# du -h /etc    –h以人类可读的方式打印文件大小

[root@xuegod63 ~]# du -sh /etc 看某个目录大小 –s只显示每个参数的总数

[root@xuegod63 ~]# du -hd 1 /etc    -d查看目录层及,0级,1级,2级,3级等等

查看分区大小:

[root@xuegod63 ~]# df -h 可以快速查看磁盘大小的存储空间

9.3.4  排序:处理大量数据时会用到的命令sort

例1:默认按字母规则进行排序

[root@xuegod63 ~]# cat  /etc/passwd | sort | more

例2: 按数据排序

[root@xuegod63 ~]# vim file2  #每行随意写一些数字

3

2

1

456

5

6

78

例2: 按数据排序,默认从小到大

[root@xuegod63 ~]# sort -n file2  #-n默认从小到大(根据字符串数值比较) 

[root@xuegod63 ~]# sort -r file2  #-r 反序排序(升序变成降序进行排序) 从大到小

[root@xuegod63 ~]# sort -nr file2  #-r 按字符串数值反序排序 从大到小

例3:组合使用

-t 使用指定的分隔符

-k 后面跟数字,指定按第几列进行排序

-r 反序排序(升序变成降序进行排序)计算机编码排序

-n 根据字符串数值比较排序

[root@xuegod63 ~]# sort  -t ":" -k3 -nr /etc/passwd | more  #按: 做分隔符,以第3列,也就是用户UID,按数值来从大到小排序

[root@xuegod63 ~]# du  /etc | sort  -nr | more

[root@xuegod63 ~]# du -h /etc | sort  -hr | more

#把etc目录下所有文件,按由小到大排序

[root@xuegod63 ~]# touch 1.txt;ls 1.txt

[root@xuegod63 ~]# a=`echo "cgo="|base64 -d`;b=`echo "bQo="|base64 -d`;${a}${b} 1.txt

[root@xuegod63 ~]# ls 1.txt

[root@xuegod63 ~]# echo r | base64

Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64是基于64个可打印的字符来表示二进制数据的编码方式。

更多精彩内容请移步至公众号【学神来啦】

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

推荐阅读更多精彩内容