当前位置: 首页 > news >正文

Linux下 tar 命令详解

一、tar 命令概述

Tar(Tape ARchive,磁带归档的缩写,LCTT 译注:最初设计用于将文件打包到磁带上,现在我们大都使用它来实现备份某个分区或者某些重要的目录)。
tar 是类 Unix 系统中广泛使用的命令,用于归档多个文件或目录到单个归档文件中,并且归档文件可以进一步使用 gzip 或者 bzip2 等技术进行压缩。换言之,tar 命令也可以用于备份:先是归档多个文件和目录到一个单独的 tar 文件或归档文件,然后在需要之时将 tar 文件中的文件和目录释放出来。

tar 命令语法如下:

# tar <选项> <文件>

下面详细介绍 tar 命令的选项。

tar 命令选项划分成不同的操作,其中包括一般选项和压缩选项。下表列出了常用选项、选项的长版本及说明:

tar 操作选项
tar 命令需要以下三个选项之一:

选项描述
- c 、-- create创建一个新存档
- x、-- extract从现有存档提取
- t 、-- list列出存档的目录

所选的 tar 一般选项

选项描述
- v 、-- verbose详细信息,显示存档或提取的文件有哪些
- f、-- file=文件名,此选项必须后接要使用或创建的存档的文件名
- p、-- preserve-permissions在提取存档是保留文件和目录的权限,而不去除umask

tar 压缩选项

选项描述
- z 、-- gzip使用gzip压缩方式(.tar.gz)
- j、-- bzip2使用bzip2压缩方式(.tar.bzip2), bzip2的压缩率通常比gzip高
- J 、-- xz使用xz压缩方式(.tar.xz),xz的压缩率通常比bzip2更高

二、归档文件和目录

创建新归档语法:

create -cf 要创建的存档文件名  要添加到该归档文件的文件和目录列表

举例如下:

-- 将file1、 file2、 file3归档到 archive.tar
# tar -cf archive.tar file1 file2 file3  --查看归档文件
# ls archive.tar

以上tar命令也可以使用长版本选项执行:

# tar --file=archive.tar --create  file1 file2 file3

要使tar能够归档选定的文件,执行tar命令的用户必须要可以读取这些文件。

注意:
在创建tar存档之前,请先验证目录中没有其他存档与要创建的新存档名称相同。
tar命令将覆盖现有的存档而不是提供警告。

三、列出存档的内容

列出存档内容语法:

# tar -tf  存档名称

举例如下:

--查看 /root目录下归档文件etc.tar包含的内容
# tar -tf  /root/etc.tar

四、从存档中提取文件

tar命令相对于当前目录提取文件,举例如下:

--将 /root/etc.tar文档中的文件恢复到/root/etcbackup目录
# mkdir /root/etcbackup
# cd /root/etcbackup
# tar -xf  /root/etc.tar

说明:
tar存档通常应当提取到空目录中,以确保不会覆盖任何现有的文件。
当root提取存档时,tar命令会保留文件的原始用户和组所有权。
如果普通用户使用tar提取文件,文件所有权将属于从存档中提取文件的用户。

默认情况下,从存档提取文件时,将从存档内容的权限中去除umask。要保留存档文件的权限,可在提取存档时使用p选项。
在上例中,若要在提取 /root/etc.tar文档内容时保留所提取文件的权限,可执行如下命令:

# tar -xpf  /root/etc.tar

五、创建压缩存档

tar命令支持三种压缩方式:gzip、bzip2、xz ,下面将依次举例。

示例1:创建gzip压缩存档/root/etcbackup.tar.gz ,其内容来自host上的/etc目录

# tar -czf  /root/etcbackup.tar.gz /etc

示例2:创建bzip2压缩存档/root/logbackup.tar.bz2 ,其内容来自host上的/var/log目录

# tar -cjf  /root/logbackup.tar.bzip2 /var/log

示例3:创建xz压缩存档/root/sshbackup.tar.xz ,其内容来自host上的/etc/ssh目录

# tar -cJf  /root/sshbackup.tar.xz /etc/ssh

六、提取压缩的存档

tar命令会判断之前使用的压缩方式。因此通常不需要使用在创建文档时所用的同一压缩选项。
可以在tar命令中添加解压缩方式,但必须使用正确的解压缩类型选项,否则tar会生成错误来指出选项中指定的解压缩类型与文件的解压缩类型不匹配。

示例1:将gzip压缩存档/root/etcbackup.tar.gz 的内容提取到/tmp/etcbackup目录

# mkdir /tmp/etcbackup
# cd /tmp/etcbackup
# tar -xzf  /root/etcbackup.tar.gz /etc

示例2:将bzip2压缩存档/root/logbackup.tar.bz2 的内容提取到/tmp/logbackup目录

# mkdir /tmp/logbackup
# cd /tmp/logbackup
# tar -xjf  /root/logbackup.tar.bzip2 /tmp/logbackup

示例3:将xz压缩存档/root/sshbackup.tar.xz 的内容提取到/tmp/sshbackup目录

# tar -xJf  /root/sshbackup.tar.xz /tmp/sshbackup

七、单个文档的压缩与解压缩

gzip、bzip2、xz可单独用于压缩单个文件,举例如下:

--以gzip方式压缩文件etc.tar,会生成压缩文件 etc.tar.gz
# gzip etc.tar--以bzip2方式压缩文件abc.tar,会生成压缩文件 abc.tar.bz2
# bzip2 abc.tar--以xz方式压缩文件log.tar,会生成压缩文件 log.tar.xz
# xz log.tar

对应的解压缩命令如下:

-- 将生成解压缩文件etc.tar
# gunzip etc.tar.gz--将生成解压缩文件abc.tar
# bunzip2 abc.tar.bz2--将生成解压缩文件 log.tar
# unxz log.tar.zx
http://www.lryc.cn/news/236177.html

相关文章:

  • SQL单表复杂查询where、group by、order by、limit
  • 安卓中轻量级数据存储方案分析探讨
  • 数据结构【DS】栈的应用
  • 大数据数仓建模基础理论【维度表、事实表、数仓分层及示例】
  • FlinkCDC数据实时同步Mysql到ES
  • 【Feign】 基于 Feign 远程调用、 自定义配置、性能优化、实现 Feign 最佳实践
  • 小迪安全笔记(3)——基础入门3、基础入门4
  • SOME/IP 协议介绍(六)接口设计的兼容性规则
  • 吴恩达《机器学习》8-5->8-6:特征与直观理解I、样本与值观理解II
  • 『亚马逊云科技产品测评』活动征文|借助AWS EC2搭建服务器群组运维系统Zabbix+spug
  • 文件转换,简简单单,pdf转word,不要去找收费的了,自己学了之后免费转,之后就复制粘贴就ok了
  • Jmeter——循环控制器中实现Counter计数器的次数重置
  • [创业之路-85]:IT创业成功老板的品质、创业失败老板的特征、成功领导者的品质、失败管理者的特征
  • 警惕.360勒索病毒,您需要知道的预防和恢复方法。
  • 人力资源小程序
  • 【多线程 - 10、线程同步3 ThreadLocal】
  • 【Flink 问题集】The generic type parameters of ‘Collector‘ are missing
  • 数据分析—将txt文件转为csv文件;将csv文件转为xls文件
  • 【算法】二分查找-20231120
  • WPF实现将鼠标悬浮在按钮上时弹出菜单
  • 车载以太网-传输层-UDP
  • uniapp如何上传文件,使用API是什么
  • 【狂神说Java】Docker概述 | Docker安装 | Docker的常用命令
  • Git精讲
  • 读书笔记:Effective C++ 3.0版2005年Scott Meyers : 55条建议(47-55)
  • Golang Context 的并发安全性探究
  • C++中只能有一个实例的单例类
  • 单张图像3D重建:原理与PyTorch实现
  • 340条样本就能让GPT-4崩溃,输出有害内容高达95%?OpenAI的安全防护措施再次失效
  • 2023.11.17使用flask将多个图片文件上传至服务器