linux常用命令(2):tar命令(压缩文件/解压缩文件)

文章目录

一、命令简介

tar 用于将 Linux 的文件和目录创建为档案或将档案还原为文件和目录。此外,tar 也可以在档案中改变文件,或者向档案中加入新的文件。本程序最初的设计目的是将文件备份到磁带上(Tape ARchive),因而得名 tar。

tar 的工作过程主要分为两个步骤,正向是打包与压缩,反向是解压缩与还原。打包指的是将一大堆文件或目录变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。反向的解压缩与还原刚好是相反的过程。tar 的压缩与解压缩,用到的主要是 gzip 与 bzip2 命令。

那为什么在Linux中很少看到.zip和.rar这样的压缩包呢?

zip和rar在压缩文件时无法保留文件的属性,所以才有tar指令的压缩,即先归档后压缩。

在Linux系统中,通常更倾向于使用.tar压缩文件格式,因为.tar文件不会进行压缩,只是将文件打包在一起,更适合用于归档和文件打包。

在Linux中,常见的压缩包格式有:.tar.tar.xz.tar.gz(或.tgz)、.tar.bz2。这里要注意:.tar文件是一种仅打包不压缩的文件格式。

.tar.xz.tar.gz(或.tgz)、.tar.bz2文件才是对.tar文件的压缩。

所以.tar 文件本身并不是压缩文件,而是一种归档文件格式。

二、安装与卸载

1.检查linux上是否有tar命令

bash 复制代码
yum list installed | grep tar

2.安装tar命令

bash 复制代码
yum -y install tar

3.扩展命令 安装 卸载 更新

bash 复制代码
命令1:yum -y install [关键词]
命令2:yum -y remove [关键词]
命令3:yum -y update [关键词]

三、命令格式

bash 复制代码
tar [OPTIONS] [FILE]...

选项说明

bash 复制代码
-A, --catenate, --concatenate
	新增文件到已存在的存档
-c,--create
	建立新的存档
-C, --directory=DIR
	将 tar 的工作目录从当前目录改为指定目录。该选项对顺序敏感,即影响其后的所有选项
-d, --diff, --compare
	对比档案与文件系统的差异
--delete
	从档案中删除制定的文件
-f, --file=ARCHIVE
	指定存档文件
-j, --bzip2
	通过 bzip2 命令压缩或解压缩档案
-k, --keep-old-files
	还原档案时,保留当前目录下的原有文件不被覆盖 
-l, --check-links
	如果不是所有链接都被转储,则打印一条消息
-m, --touch
	还原文件时,不变更文件的更改时间
-N, --newer, --after-date=DATE
	只将较指定日期更新的文件保存到档案中
-O, --to-stdout
	将提取的文件名和目录名打印到标准输出
-p, --preserve-permissions, --same-permissions
	提取文件时保留文件原来的权限
-P, --absolute-names
	创建存档时不移除文件名称前的 / 号
-r, --append
	追加文件到档案的末尾
-t, --list
	列出档案的内容
-u, --update
	添加比档案中文件更新的文件到档案中
-v, --verbose
	显示指令执行过程
-W, --verify
	向档案写入文件后尝试验证
-x, --extract, --get
	从档案提取文件  
-z, --gzip, --gunzip, --ungzip
	通过 gzip 命令压缩或解压档案
-Z, --compress, --uncompress
	通过 compress 指令处理备份文件
--exclude=PATTERN
	排除符合指定模式的文件
-?, --help
	显示短选项的概要信息并退出
--usage
	显示可用选项列表并退出
--version
	显示版本和版权信息并退出

四、常用示例

linux上有文件目录结构如下,结合以下文件讲解tar示例

bash 复制代码
/home/test
├── a.txt
├── b.log
├── test01
    └── c.txt

4.1、打包

(1)将指定目录下的目录或文件进行打包。

bash 复制代码
tar -czvf test.tar.gz  /home/test

由于指定了绝对路径/home/test, 所以压缩包内将目录也保存下来了

(2)将目录 /home/test 打包成 test.tgz,同时使用 gzip 进行压缩。

bash 复制代码
tar -czvf test.tgz /home/test

(3)将目录 /home/test 打包成 test.tbz2,同时使用 bzip2 进行压缩。

bash 复制代码
tar --cjvf test.tgz2 /home/test

(4)向已存在的tar文件中追加文件

bash 复制代码
tar -rvf test.tar newfile1 newfile2

4.2、解包

(1)将压缩包 test.tar.gz还原为原目录

bash 复制代码
tar -xzvf test.tar.gz

注意:执行该命令会把文件解压缩到当前目录,若tar.gz压缩包内包含了绝对路径,则会在当前目录下创建该绝对路径。例如:在当前目录下创建/home/test。 若不想再次创建该路径,可以在home的上一级目录下执行tar解压命令

(2)将压缩包 test.tgz 还原为原目录,同时使用 gzip 进行解压缩。

bash 复制代码
tar -xzvf test.tgz

(3)将 test.tgz 解包到指定目录,同时使用 gzip 进行解压缩。

bash 复制代码
tar -xzvf test.tgz -C DIR

(4)将压缩包test.tbz2 还原为原目录,同时使用 bzip2 进行解压缩。

bash 复制代码
tar -xjvf test.tbz2

4.3、查看

(1)只查看档案的文件列表,不进行解包。

bash 复制代码
tar -tzvf test.tar.gz

五、总结

.tar文件是一种仅打包不压缩的文件格式。

但是有时为了减小文件的大小,.tar文件与压缩算法结合使用,例如经常使用的gzip和bzip2压缩算法。这样的文件通常被称为tar压缩包或者.tar.gz、.tar.bz2等。这些压缩包是.tar文件的压缩版本,以便减小文件的大小。解压缩这些压缩包会还原成原始的.tar文件。

相关推荐
wdxylb5 小时前
云原生俱乐部-shell知识点归纳(1)
linux·云原生
飞雪20076 小时前
Alibaba Cloud Linux 3 在 Apple M 芯片 Mac 的 VMware Fusion 上部署的完整密码重置教程(二)
linux·macos·阿里云·vmware·虚拟机·aliyun·alibaba cloud
路溪非溪6 小时前
关于Linux内核中头文件问题相关总结
linux
Lovyk8 小时前
Linux 正则表达式
linux·运维
Fireworkitte9 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil90010 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char10 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
淮北也生橘1212 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
华强笔记15 小时前
Linux内存管理系统性总结
linux·运维·网络
十五年专注C++开发15 小时前
CMake进阶: CMake Modules---简化CMake配置的利器
linux·c++·windows·cmake·自动化构建