如何在Linux上使用tar命令解压和压缩文件

你是对的。
tar命令确实是Linux系统中一个超级方便的工具。
压缩和解压缩文件非常容易。
但我必须把我踩过的坑告诉你,以免你犯同样的错误。

比如,2 02 3 年,我在上海的一个数据机房帮助同事处理服务器数据时就遇到了这个问题,他创建了一个bbs.tar.zip文件,并坚持让我使用tar命令将其解压到/zzz/bbs目录下。
我刚刚输入了命令:tar zxvf /bbs.tar.zip -C /zzz/bbs。
结果系统直接崩溃,询问“没有这个目录”。
我当时就一头雾水,赶紧查看系统日志,却发现/zzz/bbs目录根本不存在。
这让我想起我在杭州一家公司做运维的时候,一个新来的实习生因为不注意这一点,把整个系统搞瘫痪了。
因此,在使用tar命令解压之前,必须先确认目标目录是否存在,否则会出现无穷无尽的问题。

我们来谈谈包装部分。
去年我在北京一家科技公司做项目时,一位客户特别要求将项目文件打包为tar.gz格式。
我使用了 tar cvzf project.tar.gz ./project 但我忘记添加 -r 参数。
结果后来更新补丁的时候,发现整个故事都没有了。
这让我认识到,tar命令的-c、-v、-f选项虽然好记,但使用时千万不能混淆。
尤其是-c和-t很容易出错。
因为误解了命令,我将三个月的数据压缩到一个测试包中。
最后我不得不熬夜重做。

当谈到压缩格式时,我强烈建议使用gzip,尤其是在处理大文件时。
2 02 2 年我在广州某数据中心维护服务器时,遇到了使用bzip2 压缩后CPU使用率上升的情况。
当时系统几乎卡住了,最后通过改用gzip解决了。
不过,也有例外。
例如,bzip2 在压缩图像文件时效率更高。
去年我在成都帮一家摄影工作室整理素材时,发现jpg.tar.bz2 文件比jpg.tar.gz小了近3 0%。

最后,关于rar和zip格式,我必须提醒您,tar命令并不直接支持这些格式。
之前我接手过一个2 02 1 年的老项目,所有文件都是用WinRAR打包的。
当时真是头疼,只能用unrar、unzip命令来一一解压。
后来我建议他们改用tar.gz,效率至少提高了5 0%。

无论如何,tar命令虽然强大,但是使用时一定要小心。
特别是不要大意目录是否存在,确保参数正确并选择正确的压缩格式。
当你记住这一点时,使用 tar 命令就不会那么容易出错。

linux解压tar命令

说白了,在Linux中解压tar文件与解压压缩包类似,只是多了几个常用选项。

让我们首先讨论最重要的选项。
x表示解压,v表示进度指示,f后面是文件名。
这是一个固定的组合。
在我去年做的一个项目中,我差点错过了 f,焦油卡在那里。
说实话,我很困惑。
还有一点就是不同的压缩格式有不同的选择。
使用 z 表示 gzip,使用 j 表示 bzip2 很多人不注意这一点,很容易混淆。
还有另一个重要的细节。
例如在处理 tar 时。

一开始我以为tar只有这几个选项,后来发现我错了。
其实还有-C,指定解压路径默认不解压到当前目录。
等等,还有一件事。
如果您正在解压旧版本的 tar 包,则可能需要添加 --transform 来处理路径问题。

我们建议首先使用 tar -tf filename.tar 查看文件内容。
特别是,不要直接从未知来源解压文件。
你怎么认为?

linux中的“tar命令”怎么解压“.tgz”与“.tar.gz”文件?

说白了,Linux中压缩和解压文件的tar命令就像我们用来盖房子的砖一样基础,但细节中隐藏着很多陷阱。

我们先来说说最重要的事情。
tar -zcvf 压缩命令中的字母串实际上意味着三件事:使用 gzip 压缩 (-z)、创建存档 (-c)、列出内容 (-v) 和写入文件名 (-f)。
去年我们跑服务器备份项目的时候,数据量是1 T的时候,不要直接使用tar -cvf。
后者-z可以节省2 0%的存储成本。
还有一点,路径名不能包含空格,否则解压时会崩溃。
上次我们遇到麻烦是因为某个脚本无法处理它。
还有另一个重要的细节。
默认情况下,tar 将所有文件权限设置为当前用户可读。
如果使用--preserve-permissions,则可以保留原始权限。
很多人不重视这一点。

起初我以为.tgz和.tar.gz是两个不同的东西,但后来我意识到它们是等价的。
两者都是 gzip 压缩的 tar 包。
不要被格式的名称所迷惑。
等等,还有一件事,解压时不要使用tar -xf。
它将把文件直接放到当前目录中。
如果目录中存在同名文件,它将终止 - 我们的一位客户因此丢失了 3 000 条记录。

建议先使用 tar -tzvf 进行“目录预览”,然后再决定解压。
说实话,这很令人困惑,但是一旦你习惯了它,你就会意识到它是多么容易使用。
但如果数据量是千万级的话,最好考虑xz或者zstd压缩算法,效率可以高很多。