Linux文件的打包和压缩(tar命令)

基本概念

打包是指将多个文件或目录打包成一个文件,压缩是指将一个大的文件通过算法压缩成一个小的文件。由于Linux中的很多压缩程序只能对一个文件进行,所以通常要先将全部文件打包成一个文件,然后再对那一个打包文件进行压缩。解压缩同理,需要先将压缩包解压缩,然后再进行解包操作。

tar命令

使用tar命令可以进行打包和解包、压缩和解压缩等操作,使用tar命令打出来的包被称为tar包。

前面说Linux需要先进行打包再进行压缩,而使用tar可以用一条命令直接完成两步的操作。所以说tar命令最常用的就是同时打包并压缩、以及同时解压缩并解包。

但是为了更好地理解过程和相关的命令参数,下面会先介绍打包和解包命令,然后再介绍打包并压缩以及解压缩并解包的命令。

一、打包命令

tar <选项> <源文件或目录>
选项含义
-c将多个文件或目录进行打包
-f <包名>打包到指定文件,f后面要紧跟完整的文件名(包括扩展名)
-v在终端打印出打包的过程
-u在tar包中添加新的文件(如果tar包经过压缩就不能添加)

示例命令

1. tar -cvf package.tar test1 test2:将test1和test2文件打包到package.tar文件,并显示打包过程(f选项后面要跟包名,所以f参数一定要在最后面)

2. tar -cf package.tar test1 Desktop/dir1/:将文件test1和目录dir1打包成package.tar文件
3. tar -uf package.tar test3:将test3添加到package.tar文件中

二、解包命令

tar <选项> <压缩包>
选项含义
-x将tar包进行解包
-f <包名>解包到指定文件,同样要紧跟文件名
-C <目录>指定目录为解包位置,一般放在命令的最后面
-t查看tar包里的文件

示例命令

1. tar -xf package.tar:将package.tar文件解包到当前目录
2. tar -xf test.tar -C .. :将test.tar解包到上一级目录
3. tar -tf package.tar:查看package.tar包里的文件

三、同时打包和压缩 / 解包和解压缩

tar <选项> <压缩包> <源文件或目录>

格式其实和打包或解包差不多,就是在打包或解包的选项里加上z或者j即可。z选项使用gzip程序,j选项使用bzip2程序。Linux下最常见的两种压缩程序是gzip和bzip2,所以只要知道这两种就够了

选项含义
-z针对 .tar.gz 格式进行压缩或解压缩(调用gzip程序)
-j针对 .tar.bz2 格式进行压缩或解压缩(调用bzip2程序)

示例命令

1. tar -czf test.tar.gz test1 test2:将test1和2打包成一个tar包,然后用gzip算法压缩,生成一个经gzip压缩过的tar包,名为test.tar.gz。简单说就是将test1、2打包压缩成test.tar.gz文件
2. tar -xzf test.tar.gz -C Desktop/:将test.tar.gz解压缩并解包到Desktop目录
3. tar -cjvf test.tar.bz2 test1 test2:将test1和2打包压缩成test.tar.bz2文件,并打印出过程
4. tar -xjf test.tar.bz2:解压缩文件test.tar.bz2到当前目录

注:对于已经打包成tar包的文件,也是使用这些命令进行压缩。例如tar -czf filename.tar.gz filename.tar,就是把filename.tar包压缩成filename.tar.gz

四、关于文件扩展名

Linux下的文件名是没有任何作用的,但程序员通常会以适当的扩展名来表示文件的种类。例如.sh表示脚本文件;.php表示PHP语法的网页文件; .tar、.tar.gz、.zip等表示经过不同压缩软件压缩的文件。

既然扩展名没有任何作用,为什么tar命令的-f后面的文件需要加上文件扩展名?因为Linux支持的压缩算法很多,而不同的算法无法互相压缩或解压缩文件。所以,打包压缩文件时加上扩展名是为了让我们知道该文件用的是哪种压缩命令,好用来对照着解压缩。例如,解压.tar.gz文件需要用-z选项(gzip程序),而.tar.bz2文件要用-j选项(bzip2程序)

参考资料:《鸟哥的Linux私房菜 基础学习篇 第四版》

https://blog.csdn.net/ji519974770/article/details/81916468

http://c.biancheng.net/view/3976.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值