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 "。
浙公网安备 33010602011771号