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文件。

相关推荐
jieyucx1 小时前
【系统安全铁律】解密 Linux 权限三色数字密码:chmod 最小化赋权与生产环境避坑指南
linux·安全·系统安全·权限·chmod·777
AOwhisky2 小时前
Linux(CentOS)系统管理入门笔记(第四期)——文件系统(下篇):文件与目录操作实战——cpmvmkdirrmln
linux·运维·笔记·centos·云计算·文件系统
岑梓铭2 小时前
考研408《操作系统》复习笔记,第四章《4.2.2 文件操作、文件共享、文件保护》
linux·考研·操作系统·文件系统·408
Mr.HeBoYan2 小时前
DPDK为什么越来越少使用rte_ring?——从Lock-Free到Run-to-Completion,重新理解现代DPDK架构演进(上)
linux·网络·算法·性能优化·架构·dpdk
云栖梦泽4 小时前
从 IMX415 摄像头驱动理解 Media Controller 框架
linux·开发语言·c++·嵌入式硬件
纳兰青华4 小时前
CentOS Stream 9 下载与安装完全指南:为什么它是当前最稳妥的选择?
linux
草邦设计开发团队_媒体资源平台4 小时前
Linux 稳定常驻启动 PHP 队列,服务器重启自动恢复
linux·服务器·php·队列执行
A_humble_scholar5 小时前
Linux(十六)从页表到线程封装:深入理解 Linux 线程的共享、控制与封装
linux
海盗12345 小时前
.NET编码规范03-C#命名规范大全
linux·服务器·.net
WZF-Sang5 小时前
TCP和UDP协议
linux·服务器·网络·c++·学习·tcp/ip·udp