Linux tar/zip 压缩文件和目录

Linux tar/zip 压缩文件和目录

Linux上的tar命令通常用于创建.tar.gz或.tgz归档文件,也称为“tarball”。这个命令有很多选项,但是您只需要记住几个字母就可以用tar快速创建存档。tar命令也可以提取生成的归档文件。

Linux发行版中包含的GNU tar命令集成了压缩。它可以创建一个.tar归档文件,然后在一个命令中使用gzip或bzip2压缩对其进行压缩。这就是为什么生成的文件是.tar.gz或.tar文件。bz2文件获取。

压缩整个目录或单个文件

在Linux上使用以下命令压缩整个目录或单个文件。它还将压缩您指定的目录中的所有其他目录—换句话说,它递归地工作。

tar -czvf name-of-archive.tar.gz /path/to/directory-or-file

举例:

假设你在当前目录中有一个名为“stuff”的目录,你想把它保存到一个名为archive.tar.gz的文件中。运行以下命令:

tar -czvf archive.tar.gz stuff

或者,假设在当前系统的/usr/local/something有一个目录,您希望将其压缩为一个名为archive.tar.gz的文件。运行以下命令

tar -czvf archive.tar.gz /usr/local/something

参数说明

说明:-c/-x/-t/u 不可同时出现

参数 参数说明
-c 新建打包文件,同 -v 一起使用 查看过程中打包文件名
-x 解决文件, -C 解压到对应的文件目录。
-f 后面接要处理的文件
-j 通过bzip2方式压缩或解压,最后以.tar.br2 为后缀。压缩后大小小于.tar.gz
-z 通过gzip方式压缩或解压,最后以.tar.gz 为后缀
-v 压缩或解压过程中,显示出来过程
-t 查看打包文件中内容,重点文件名
-u 更新压缩文件中的内容。
-p 保留绝对路径,即允许备份数据中含有根目录
-P 保留数据原来权限及属性。
--exclude =FILE 压缩过程中,不要讲FILE打包
man tar 查看更多参数

一次压缩多个目录或文件

虽然tar经常用于压缩单个目录,但您也可以使用它来压缩多个目录、多个单独的文件,或者多个目录及文件。只需提供一个文件或目录的列表就可以实现。例如,假设您想压缩/home/ubuntu/Downloads目录、/usr/local/stuff目录和/home/ubuntu/Documents/notes.txt文件。您只需运行以下命令:

tar -czvf archive.tar.gz /home/ubuntu/Downloads /usr/local/stuff /home/ubuntu/Documents/notes.tx

tar时排除目录和文件

在某些情况下,您可能希望压缩整个目录,但不包括某些文件和目录。为此,可以为要排除的每个目录或文件附加--exclude选项

例如,假设你想压缩/home/ubuntu,但是你不想压缩/home/ubuntu/downloads和/home/ubuntu/.cache目录。你应该这样做:

tar -czvf archive.tar.gz /home/ubuntu --exclude=/home/ubuntu/Downloads --exclude=/home/ubuntu/.cache

--exclude选项非常强大。它后面跟要排除的目录和文件的名称。你可以用它做更多的事情。例如,你可以归档整个目录,并排除所有的.mp4文件,使用以下命令:

tar -czvf archive.tar.gz /home/ubuntu --exclude=*.mp4

使用bzip2压缩代替

虽然gzip压缩最常用于创建.tar.gz或.tgz文件,但tar也支持bzip2压缩。这允许您创建bzip2压缩文件,通常命名为.tar.bz2,.tar.bz或.tbz后缀文件。要做到这一点,只需将这里命令中gzip的-z替换为bzip2的-j。

注:

Gzip更快,但它通常压缩比率会小,因此得到的文件会稍大一些。Bzip2较慢,但它压缩比率大,因此得到的文件略小一些。Gzip也更常见,一些精简的Linux系统默认支持Gzip,但不支持bzip2。一般来说,gzip和bzip2实际上是相同的东西,两者的工作方式相似。

例如,你可以运行以下命令,类似我们提供的第一个压缩stuff目录的例子:

tar -cjvf archive.tar.bz2 stuff

提取存档

有了存档文件后,可以使用tar命令对其进行解压缩。下面的命令将把archive.tar.gz的内容解压到当前目录。

tar -xzvf archive.tar.gz

它与我们上面使用的存档创建命令相同,只是-x取代了-c。它说明您想要提取存档而不是创建存档。

您可能希望将归档文件的内容解压缩到特定的目录中。可以通过在命令末尾附加-C来实现。例如,下面的命令将把archive.tar.gz文件的内容解压缩到/tmp目录下。

tar -xzvf archive.tar.gz -C /tmp

如果文件是bzip2压缩文件,则将上述命令中的" z "替换为" j "。

posted @ 2023-09-05 17:29  寻梦99  阅读(5486)  评论(0)    收藏  举报