Linux 归档及压缩

本章主要介绍如何将linux的文件进行归档和压缩。

        ●   使用tar对多个文件进行归档

        ●   使用gzip对文件进行压缩和解压

        ●   使用bzip2对文件进行压缩和解压

        ●   使用tar结合gzip 实现文件的归档和压缩

        ●   使用tar结合bzip2 实现文件的归档和压缩

一、归档

        为了方便文件在网络上传输,我们需要把多个文件(归档)。常见的归档命令包括tar和cpio,这里讲 tar的使用,cpio请大家自行学习。

1 tar cvf aa.tar file1 file2 file3
2 c的意思是创建归档
3 v的意思是创建归档时显示被归档的文件,为了简化输出,可以不加v选项
4 f用于指定归档文件
5 这里的意思是把file1、file2、file3归档到aa.tar中

        归档文件一般使用tar后缀。

        先做准备,拷贝几个文件到当前目录,命令如下。

1 [root@server ~]# cp /etc/hosts /etc/passwd /etc/services .
2 [root@server ~]# ls
3 anaconda‐ks.cfg hosts initial‐setup‐ks.cfg passwd services
4 [root@server ~]#

         然后把hosts、passwd、services三个文件归档成一个文件aa.tar,命令如下。

1 [root@server ~]# tar cf aa.tar hosts passwd services
2 [root@server ~]# ls
3 aa.tar anaconda‐ks.cfg hosts initial‐setup‐ks.cfg passwd services
4 [root@server ~]#

        这里归档文件是aa.tar,查看它们的大小,命令如下。

1 [root@server ~]# ls ‐lh passwd services hosts aa.tar
2 ‐rw‐r‐‐r‐‐ 1 root root 690K 3月 7 12:16 aa.tar
3 ‐rw‐r‐‐r‐‐ 1 root root 158 3月 7 12:14 hosts
4 ‐rw‐r‐‐r‐‐ 1 root root 2.5K 3月 7 12:14 passwd
5 ‐rw‐r‐‐r‐‐ 1 root root 677K 3月 7 12:14 services
6 [root@server ~]#

        可以看到,aa.tar文件的大小比三个文件大小的总和还大,说明用tar只有归档功能,并没有压缩功能。

        从上面的操作可以看出,当创建好归档文件后,源文件还是在的,即把hosts、passwd、services归档到aa.tar中之后,这三个文件依然存在。如果希望归档之后同时删除源文件,可以加上--remove-files选项。

        删除aa.tar,然后再次归档,命令如下。

1 [root@server ~]# rm ‐rf aa.tar
2 [root@server ~]# tar cf aa.tar hosts passwd services ‐‐remove‐files
3 [root@server ~]# ls
4 aa.tar anaconda‐ks.cfg initial‐setup‐ks.cfg
5 [root@server ~]#

        可以看到,三个文件归档到aa.tar中之后就被删除了。

        查看归档文件中有哪些文件,可以使用t选项,命令如下。

1 [root@server ~]# tar ‐tf aa.tar
2 hosts
3 passwd
4 services
5 [root@server ~]#

        想在归档文件中追加一个文件用r选项,命令如下。

1 [root@server ~]# tar rf aa.tar anaconda‐ks.cfg
2 [root@server ~]# tar ‐tf aa.tar
3 hosts
4 passwd
5 services
6 anaconda‐ks.cfg
7 [root@server ~]#

        这里已经把anaconda-ks.cfg 写入aa.tar中了。

        对归档文件进行解档,解档的语法如下。

1 tar xvf aa.tar
2 这里×表示解档
3 v显示解档出来的文件,为了简化输出,v选项可以不写
4 f用于指定归档文件

        练习:把aa.tar解档,命令如下。

1 [root@server ~]# tar xf aa.tar
2 [root@server ~]# ls
3 aa.tar anaconda‐ks.cfg hosts initial‐setup‐ks.cfg passwd services
4 [root@server ~]#

        可以看到,解档时默认为解档到当前目录。如果要解档到指定的目录,需要加上"-C指定目录",现在要把aa.tar解档到/opt目录中,命令如下。

1 [root@server ~]# ls /opt/
2 yy
3 [root@server ~]# tar xf aa.tar ‐C /opt/
4 [root@server ~]# ls /opt/
5 anaconda‐ks.cfg hosts passwd services yy
6 [root@server ~]#

        然后清空/opt中的内容,命令如下。

1 [root@server ~]# rm ‐rf /opt/*
2 [root@server ~]# ls /opt/
3 [root@server ~]#

        当然,也可以只解档aa.tar中的某一个文件,只要在正常解档命令后面加上要解档的文件即可。

        把aa.tar中的hosts解档出来放在/opt中,命令如下。

1 [root@server ~]# ls /opt/
2 [root@server ~]#
3 [root@server ~]# tar xf aa.tar ‐C /opt/ hosts
4 [root@server ~]# ls /opt/
5 hosts
6 [root@server ~]#

        需要注意的是,这里hosts要写在-C /opt的后面

二、压缩

        前面讲tar只是归档,并没有压缩功能。要是想压缩,有专门的工具,如gzip、bzip2、zip.

        先创建一个测试文件,命令如下。

1 [root@server ~]# dd if=/dev/zero of=file bs=1M count=100
2 记录了100+0 的读入
3 记录了100+0 的写出
4 104857600 bytes (105 MB, 100 MiB) copied, 0.42667 s, 246 MB/s
5 [root@server ~]#

        (1)f是读取哪里的内容,这里是/dev/zero。

        (2)of是组成的文件名。

        (3)count指定zero的数目        (4)bs指定每个zero的大小,如果没有指定单位则默认为B。

        这里的意思是拿100个大小为1M的/dev/zero组成一个名称叫file的文件,此file的大小应该是100M。

1 [root@server ~]# ls ‐lh file
2 ‐rw‐r‐‐r‐‐ 1 root root 100M 3月 7 17:25 file
3 [root@server ~]#
2.1、gzip的用法

        gzip的用法如下

1 压缩:gzip file, 压缩出来的文件后缀为gz
2 解压:gzip -d file.gz

        使用gzip对file进行压缩,命令如下。

1 [root@server ~]# gzip file
2 [root@server ~]# ls ‐lh file.gz
3 ‐rw‐r‐‐r‐‐ 1 root root 100K 3月 7 17:25 file.gz
4 [root@server ~]#

        可以看到,file原来100M,压缩成file.gz的大小只有100K。因为file文件过于简单,所以压缩率很高。

        用gzip把file.gz解压,命令如下。

1 [root@server ~]# gizp -d file.gz
2 [root@server ~]#

        一般情况下,tar和gzip结合在一起使用,用法如下。

1 tar zcf aa.tar.gz file1 file2 file3  

        在tar选项中加z表示调用gzip,z和c一起使用就表示压缩,后缀一般为tar.gz。这句话的意思是把file1、file2、file3归档并压缩到aa.tar.gz中。

        练习:把file归档并压缩到aa.tar.gz中,命令如下。

1 [root@server ~]# tar zcf aa.tar.gz file
2 [root@server ~]#
3 [root@server ~]# ls ‐lh aa.tar.gz file
4 ‐rw‐r‐‐r‐‐ 1 root root 100K 3月 7 17:35 aa.tar.gz
5 ‐rw‐r‐‐r‐‐ 1 root root 100M 3月 7 17:25 file
6 [root@server ~]#

        解压tar.gz格式的文件用tar zxf aa.tar.gz。

        这里z表示调用gizp,与x一起使用就表示解压。

1 [root@server ~]# rm ‐rf file
2 [root@server ~]# tar zxf aa.tar.gz
3 [root@server ~]#
2.1 bzip2的用法

        bzip2也是常用的压缩工具,用法如下。

1 压缩:bzip2 file,压缩出来的文件后缀为bz2
2 解压:bzip2 ‐d fle.bz2

        使用bzip2对file进行压缩命令如下。

1 [root@server ~]# bzip2 file
2 [root@server ~]# ls ‐lh file.bz2
3 ‐rw‐r‐‐r‐‐ 1 root root 113 3月 7 17:25 file.bz2
4 [root@server ~]#

        这里把100M的file压缩到1K一下。因为file文件过于简单,所以压缩率很高。

        使用bzip2进行加压,命令如下。

1 [root@server ~]# bzip2 ‐d file.bz2
2 [root@server ~]#

        一般情况下,tar和bzip2结合在一起使用,用法如下。

1 [root@server ~]# bzip2 ‐d file.bz2
2 [root@server ~]#

        在tar选项中加j表示调用bzip2,i和c一起使用就表示压缩,后缀一般为tar.bz2。这句话的意思是把file1、file2、file3、归档并压缩到aa.tar.bz2中。

1 [root@server ~]# tar jcf aa.tar.bz2 file
2 [root@server ~]# ls ‐lh aa.tar.bz2
3 ‐rw‐r‐‐r‐‐ 1 root root 188 3月 7 17:41 aa.tar.bz2
4 [root@server ~]#

        解压tar.bz2格式的文件用tar jxf aa.tar.bz2。

        这里j表示调用bziip2,与x一起使用就表示解压。

1 [root@server ~]# rm ‐rf file
2 [root@server ~]# tar jxf aa.tar.bz2
3 [root@server ~]#
2.3 zip的用法

        zip是常用的压缩工具,在Windows 中也经常使用。zip的用法如下。

1 压缩文件: zip aa.zip file,把file压缩到aa.zip中
2 压缩目录:zip ‐r bb.zip dir,把目录dir压缩到bb.zip中

        如果解压zip格式的压缩文件,则用unzip命令,用法如下。

1 unzip aa.zip

        练习:把file压缩到aa.zip中,命令如下。

1 [root@server ~]# zip aa.zip file
2 adding: file (deflated 100%)
3 [root@server ~]#
4 [root@server ~]# ls ‐lh file aa.zip
5 ‐rw‐r‐‐r‐‐ 1 root root 100K 3月 7 17:57 aa.zip
6 ‐rw‐r‐‐r‐‐ 1 root root 100M 3月 7 17:25 file
7 [root@server ~]#

        解压zip格式的压缩文件,命令如下。

1 [root@server ~]# rm ‐rf file
2 [root@server ~]# unzip aa.zip
3 Archive: aa.zip
4 inflating: file
5 [root@server ~]#

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值