2.8 文件的归档和压缩

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

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

归档和压缩文件

归档和压缩文件的好处:节约硬盘的资源 ,加快文件传输速率
tar命令 作用:打包、压缩文件
作用:打包、压缩文件;tar 文件是把几个文件和(或)目录集合在一个文件里,该存档文件可以通过使用gzip、bzip2或xz等压缩工具进行行压缩后传输
用法:tar [OPTION…] [FILE]…
参数
-c create创建文件
-x -extract [ˈekstrækt] 提取 解压还原文件
-v --verbose显示执行详细过程
-f --file指定备份文件
-t --list 列出压缩包中包括哪些文件,不解包,查看包中的内容
-C (大写)–directory 指定解压位置
给/boot/grub 目录打包

[root@CHENDAJIE chendajie]# tar -cvf grub.tar /boot/grub
tar: 从成员名中删除开头的“/”
/boot/grub/
/boot/grub/splash.xpm.gz
[root@CHENDAJIE chendajie]# ls
C.Language  rpm_check.txt  公共  视频  文档  音乐
grub.tar    test           模板  图片  下载  桌面

解压缩

[root@CHENDAJIE chendajie]# tar xvf grub.tar 
boot/grub/
boot/grub/splash.xpm.gz
[root@CHENDAJIE chendajie]# ls
boot        grub.tar       test  模板  图片  下载  桌面
C.Language  rpm_check.txt  公共  视频  文档  音乐

如上所示,此时得到了boot目录
【注意】在使用绝对路径名归档文件时,将默认从文件名中删除该路径中前面的 / 符号。这样解压时,会直接解压到当前目录。 如果不移除/压缩时,当解包时,直接按绝对路径来释放,会覆盖原系统中此路径的文件。
例1:指定解压位置 -C

[root@CHENDAJIE chendajie]# tar xvf grub.tar -C /opt/	#指定解压缩到/opt/目录下
boot/grub/
boot/grub/splash.xpm.gz
[root@CHENDAJIE chendajie]# ls /opt/
boot  dump_etc1  dump_grub2  dump_passwd  dump_sdb1

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

[root@CHENDAJIE chendajie]# cp /etc/passwd back/
[root@CHENDAJIE chendajie]# tar -cvf back.tar /boot/grub back/ /etc/passwd
tar: 从成员名中删除开头的“/”
/boot/grub/
/boot/grub/splash.xpm.gz
back/
back/passwd
/etc/passwd

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

[root@CHENDAJIE chendajie]# tar -tvf grub.tar	# List files in archhive.tar verbosely
drwxr-xr-x root/root         0 2019-09-24 21:27 boot/grub/
-rw-r--r-- root/root      1350 2011-11-16 05:03 boot/grub/splash.xpm.gz

例4:对比加v的效果

[root@CHENDAJIE chendajie]# tar -xf grub.tar
[root@CHENDAJIE chendajie]# tar -xvf grub.tar 
boot/grub/
boot/grub/splash.xpm.gz

tar 归档+压缩

语法:tar czvf newfile.tar.gz SOURCE
常用参数:
-z, --gzip 以gzip方式压缩 扩展名: tar.gz
-j : 以bz2方式压缩的 扩展名:tar.bz2
-J : 以xz 方式压缩 扩展名:tar.xz
例1:创建.tar.gz 包

[root@CHENDAJIE chendajie]#tar cvf etc.tar /etc
[root@CHENDAJIE chendajie]#tar zcvf etc.tar /etc	#归档,注意备份的名字后缀
[root@CHENDAJIE chendajie]# ls
back      boot        etc.tar.gz  rpm_check.txt  公共  视频  文档  音乐
back.tar  C.Language  grub.tar    test           模板  图片  下载  桌面

例2:创建.tar.bz2包

[root@CHENDAJIE chendajie]# tar -Jcvf etc.tar.xz /etc
[root@CHENDAJIE chendajie]# tar -xvf etc.tar.xz		#tar.xz这类包,解压缩

或:

[root@CHENDAJIE chendajie]# tar -Jxvf etc.tar.xz

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

[root@CHENDAJIE chendajie]# ll -h etc.tar*
-rw-r--r-- 1 root root 9.1M 10月 23 10:16 etc.tar.bz2	#常用
-rw-r--r-- 1 root root  11M 10月 23 10:13 etc.tar.gz	#压缩比例最高,压缩时间最长
-rw-r--r-- 1 root root 7.2M 10月 23 10:19 etc.tar.xz	#常用

二、zip管理压缩文件

zip软件包解压缩命令:
zip是压缩程序,unzip是解压程序。
例1:压缩文件:

[root@CHENDAJIE chendajie]# zip a.zip /etc/passwd
  adding: etc/passwd (deflated 61
[root@CHENDAJIE chendajie]# ls a*
a.zip

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

[root@CHENDAJIE chendajie]# zip all.zip *.jpg

zip error: Nothing to do! (all.zip)

此时显示的是没有.jpg文件
例3:压缩一个目录

[root@CHENDAJIE chendajie]# zip -r grub.zip /boot/grub
  adding: boot/grub/ (stored 0%)
  adding: boot/grub/splash.xpm.gz (deflated 87%)
[root@CHENDAJIE chendajie]# ls grub*
grub.tar  grub.zip

一般不用

解压缩:

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

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

压缩工具

我们创建压缩的TAR存档,TAR命令它支持三种不同的压缩方式。
gzip压缩速度最快;
bzip2压缩生成的文件比gzip小,但使用不如gzip广;
xz压缩工具相对较新,但是会提供最佳的压缩率
1)压缩工具
压缩工具:gzip bzip2 zip xz
常见的压缩格式: .gz .bz2 .xz .zip
语法格式:
压缩
gzip 文件 ====》 gzip a.txt =====》 a.txt.gz
bzip2 文件 ===》 bzip2 b.txt =====》 b.txt.bz2
xz 文件 ===》xz c.txt ===》c.txt.xz

[root@CHENDAJIE chendajie]# mkdir tar.test
[root@CHENDAJIE chendajie]# cd tar.test/
[root@CHENDAJIE tar.test]# touch xuegod/a.txt
[root@CHENDAJIE tar.test]# gzip xuegod/a.txt 
[root@CHENDAJIE tar.test]# ls xuegod/a*
xuegod/a.txt.gz

【注】:只能对文件进行压缩,且压缩后源文件会消失,一般不用。
(bzip2,xz这两个工具可以通过添加参数-k来保留下源文件)

[root@CHENDAJIE tar.test]# cp /etc/passwd 1.txt
[root@CHENDAJIE tar.test]# bzip2 -k 1.txt 
[root@CHENDAJIE tar.test]# ls 1.txt.bz2 
1.txt.bz2
[root@CHENDAJIE tar.test]# ls
1.txt  1.txt.bz2  xuegod
[root@CHENDAJIE tar.test]# xz -k 1.txt
[root@CHENDAJIE tar.test]# ls 1.txt.xz
1.txt.xz

解压
gzip -d 文件
bzip2 -d 文件 -k 保留源文件
xz -d 文件 或 unxz 文件 -k 保留源文件

[root@CHENDAJIE tar.test]# gzip -d 1.txt.bz2
[root@CHENDAJIE tar.test]# bzip2 -d 1.txt.bz2
[root@CHENDAJIE tar.test]# xz -d 1.txt.bz2

file查看文件

file命令
作用: file - determine file type #确定文件类型
用法: file /etc/passwd
注:linux系统不根据后缀名识别文件类型
用file命令查看文件的类型。

[root@CHENDAJIE tar.test]# file /etc/passwd
/etc/passwd: ASCII text

按一定规则排序查看文件

查看文件:

[root@CHENDAJIE tar.test]# ls -ltr	# 按时间排序
总用量 12
drwxr-xr-x 2 root root   22 10月 23 10:39 xuegod
-rw-r--r-- 1 root root  892 10月 23 10:40 1.txt.bz2
-rw-r--r-- 1 root root  920 10月 23 10:40 1.txt.xz
-rw-r--r-- 1 root root 2127 10月 23 10:40 1.txt
t表示时间
-r从小到大,不加r参数由大到小
[root@CHENDAJIE tar.test]#ls -lSr  #按大小排序  -r 从小到大 
[root@CHENDAJIE tar.test]#ls -lSr  #按大小排序  -r 从小到大 
[root@CHENDAJIE tar.test]#ls -lSr  #按大小排序  -r 从小到大 

查看目录:

[root@CHENDAJIE tar.test]# du -sh /etc #看某个目录大小
37M     /etc

查看分区大小
df -h 可以快速查看磁盘大小的存储空间

[root@CHENDAJIE tar.test]# df -h	
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        10G  4.9G  5.2G   49% /
devtmpfs        898M     0  898M    0% /dev
tmpfs           912M     0  912M    0% /dev/shm
tmpfs           912M  9.1M  903M    1% /run
tmpfs           912M     0  912M    0% /sys/fs/cgroup
/dev/sr0        4.3G  4.3G     0  100% /mnt
/dev/sda1       197M  152M   45M   78% /boot
tmpfs           183M   32K  183M    1% /run/user/1000

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

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

[root@CHENDAJIE tar.test]# cat /etc/passwd | sort | more
abrt:x:173:173::/etc/abrt:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chendajie:x:1000:1000:chendajie:/home/chendajie:/bin/bash

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

[root@CHENDAJIE tar.test]# cat a.txt 
1
2
3
5
6
12
12
13
563
132213250
7984656
[root@CHENDAJIE tar.test]# sort -n a.txt # -n默认从小到大
1
2
3
5
6
12
12
13
563
7984656
132213250
[root@CHENDAJIE tar.test]# sort -r a.txt  # -r反序排序(升序变成降序进行排序)从大到小
7984656
6
563
5
3
2
132213250
13
12
12
1

3)支持按月份排序

[root@CHENDAJIE tar.test]# 
[root@CHENDAJIE tar.test]# cat b.txt 
January
March
April
February
[root@CHENDAJIE tar.test]# sort -M b.txt 
April
February
January
March

4)组合使用
-t 指定一个用来区分键位置字符
-k 后面跟数字,指定按第几列进行排序
-r 反序排序(升序变成降序进行排序)

[root@CHENDAJIE tar.test]#  sort  -t ":" -k3 -r /etc/passwd | more #按: 做分隔符,以第3列,也就是用户UID,来从大到小排序
nobody:x:99:99:Nobody:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
libstoragemgmt:x:998:997:daemon account for libstoragemgmt:/var/run/lsm:/s
bin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
chrony:x:995:993::/var/lib/chrony:/sbin/nologin
geoclue:x:994:991:User for geoclue:/var/lib/geoclue:/sbin/nologin
setroubleshoot:x:993:990::/var/lib/setroubleshoot:/sbin/nologin
[root@CHENDAJIE tar.test]# du -h  /etc | sort  -r | more #把etc目录下所有文件,按从大到小排序
8.8M    /etc/selinux/targeted/active/modules/100
8.8M    /etc/selinux/targeted/active/modules
84K     /etc/selinux/targeted/active/modules/100/sysadm
84K     /etc/libreport/events.d
8.0K    /etc/yum/pluginconf.d
8.0K    /etc/vmware-tools/GuestProxyData/server
8.0K    /etc/vmware-tools/GuestProxyData
8.0K    /etc/systemd/system

总结:
tar命令进行文件的归档和压缩
zip管理压缩文件
了解gzip-bzip2- xz管理压缩文件-file-sort查看文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值