Linux 命令之 tar 命令-打包和备份的归档工具(附压缩/解压工具)

文章目录

  • 一、命令介绍
  • 二、命令语法
  • 三、常用选项
  • 四、命令示例
    • (一)对指定的目录进行打包(即备份归档),不压缩
    • (二)对指定目录下的内容(不含目录本身)进行打包(即备份归档),不压缩
    • (三)通过通配符筛选特定的文件进行打包,不压缩
    • (四)将指定的多个文件打成一个包,不压缩
    • (五)将多个文件打成一个包并进行压缩,且保留文件原来的权限和属性
    • (六)将指定目录下的修改时间在一定范围的文件进行打包和压缩
    • (七)对指定目录下的文件进行打包和压缩,且将特定的文件排除在外
    • (八)更新原备份包中的文件,且使用文件的绝对路径作为文件名
    • (九)将文件添加到已存在的文件包里面
    • (十)更新指定文件包内的指定文件
    • (十一)列出文件包中的所有文件
    • (十二)解压后再查看文件包的内容
      • 1.使用 gzip 解压后再查看文件包(.tar.gz)的内容
      • 2.使用 bzip2 解压后再查看文件包(.tar.bz2)的内容
    • (十三)将文件包(.tar)解包,提取文件包里的内容
    • (十四)将指定文件包的内容提取到指定的目录下,且解包时去掉第一层目录结构
    • (十五)只将压缩档内的部分文件解压解包出来
  • 五、参考文档

一、命令介绍

tar 命令可以为 Linux 的文件和目录创建档案(就是打包备份文件的意思),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用 tar 命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip、bzip2等命令)。

二、命令语法

语法:tar [选项] <参数>

参数:指定要打包的文件或目录列表

三、常用选项

选项说明
-A--catenate新增文件到已存在的备份文件
-B设置区块大小
-c--create建立新的备份文件
-C这个选项用在解压缩,选项后面跟着目录,若要在特定目录解压缩(就是把解压后的文件放置在特定目录下),可以使用这个选项
-d记录文件的差别
-x--extract或--get解包,即从备份文件中还原文件,或者说从归档文件中提取文件
-t--list列出备份文件的内容
-z--gzip--ungzip通过gzip指令处理备份文件,通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-j通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-Z--compress--uncompress通过compress指令处理备份文件
-J大写J代表用xz算法来压缩/解压
-f--file指定备份文件
-v--verbose显示指令执行过程
-r--append向归档文件末尾追加文件,新增文件到已存在的备份文件的末尾部分
-uupdate,更新备份文件中的文件
-v显示操作过程
-l文件系统边界设置
-k保留原有文件不覆盖
-m保留文件不被覆盖
-w确认压缩文件的正确性
-p--same-permissions保留原来的文件权限与属性
-P--absolute-names使用文件名的绝对路径,不移除文件名称前的正斜杠/
-N--newer只将指定日期更新的文件保存到备份文件里
--exclude排除符合范本样式的文件
-O将文件解开到标准输出

四、命令示例

(一)对指定的目录进行打包(即备份归档),不压缩

对t2目录进行打包备份,这样会对t2目录及目录下的所有文件(包含隐藏文件)进行打包:

[root@htlwk0001host ~]# tar -cf tt.tar t2

说明:-c 是表示创建新的文件包,即创建新的备份文件;-f 用来指定包文件名。

(二)对指定目录下的内容(不含目录本身)进行打包(即备份归档),不压缩

这样只会对 t2 目录下的内容进行打包,不包含 t2 目录本身,也不包含 t2 目录下的隐藏文件:

[root@htlwk0001host ~]# tar -cf tt.tar t2/*

(三)通过通配符筛选特定的文件进行打包,不压缩

这条命令是将所有 .jpg 的文件打成一个名为 all.tar 的包:

[root@htlwk0001host ~]# tar -cf all.tar *.jpg 

(四)将指定的多个文件打成一个包,不压缩

[root@htlwk0001host ~]# tar -cfv archive.tar foo bar  # 将foo和bar这两个文件打包成archive.tar,且显示打包的过程信息

说明:-c 是表示创建新的文件包,即创建新的备份文件;-f 用来指定包文件名;-v 显示打包的过程信息。

(五)将多个文件打成一个包并进行压缩,且保留文件原来的权限和属性

[root@htlwk0001host ~]# tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log 

说明:-c 是表示创建新的文件包,即创建新的备份文件;-f 用来指定包文件名;-v 显示打包的过程信息;-z 通过gzip指令压缩文件;-p 保留文件原来的权限和属性。

(六)将指定目录下的修改时间在一定范围的文件进行打包和压缩

把test目录下的修改时间大于"2012/11/13"的文件进行打包和压缩:

[root@htlwk0001host ~]# tar -N "2012/11/13" -zcvf log17.tar.gz test 
[root@htlwk0001host ~]# tar -N "2012/11/13" -jcvf log17.tar.bz2 test 

说明:-N 只将指定日期更新的文件保存到备份文件里;-z 表示打包后,以 gzip 压缩;-j 表示打包后,以 bzip2 压缩。

(七)对指定目录下的文件进行打包和压缩,且将特定的文件排除在外

备份且压缩 scf 目录下的文件,且把 scf/service 目录排除在外:

[root@htlwk0001host ~]# tar --exclude scf/service -zcvf scf.tar.gz scf/*  

(八)更新原备份包中的文件,且使用文件的绝对路径作为文件名

[root@htlwk0001host ~]# tar -Puf backup.tar /home/user 

说明:-P 使用文件名的绝对路径,不移除文件名称前的正斜杠 /-u 表示更新原包文件中的文件

(九)将文件添加到已存在的文件包里面

将所有 .gif 的文件增加到 all.tar 的包里面去:

[root@htlwk0001host ~]# tar -rf all.tar *.gif 

说明:-r 向归档文件末尾追加文件。

(十)更新指定文件包内的指定文件

这条命令是更新文件包 all.tar 中 logo.gif 文件:

[root@htlwk0001host ~]# tar -uf all.tar logo.gif 

(十一)列出文件包中的所有文件

列出包文件 all.tar 中的所有文件:

[root@htlwk0001host ~]# tar -tf all.tar 

说明:-t 表示列出备份包内的文件

列出包文件 archive.tar 中的所有文件,且显示指令执行的过程:

[root@htlwk0001host ~]# tar -tvf archive.tar

(十二)解压后再查看文件包的内容

1.使用 gzip 解压后再查看文件包(.tar.gz)的内容

[root@htlwk0001host ~]# tar -ztvf log.tar.gz

2.使用 bzip2 解压后再查看文件包(.tar.bz2)的内容

[root@htlwk0001host ~]# tar -jtvf log.tar.bz2

(十三)将文件包(.tar)解包,提取文件包里的内容

从 archive.tar 提取所有文件:

[root@htlwk0001host ~]# tar -xf archive.tar

(十四)将指定文件包的内容提取到指定的目录下,且解包时去掉第一层目录结构

[root@htlwk0001host ~]# tar -xvf portal-web-v2.0.0.tar --strip-components 1  -C /home/wwwroot/liaowenxiong/portal

说明:--strip-components 1表示解包的时候去掉第一层目录结构,--strip-components 2表示解包的时候去掉前两层的目录结构。

举例:/root/src/opp/lll.txt
第一层目录:/root/
第二层目录:/root/src/

(十五)只将压缩档内的部分文件解压解包出来

[root@htlwk0001host ~]# tar -zxvf /opt/soft/test/log30.tar.gz log2013.log 

五、参考文档

线上工具

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/334557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纹理和基元_通过粘性仙人掌基元进行延迟加载和缓存

纹理和基元您显然知道什么是延迟加载 &#xff0c;对吗&#xff1f; 而且您无疑知道缓存 。 据我所知&#xff0c;Java中没有一种优雅的方法来实现它们中的任何一个。 这是我在Cactoos原语的帮助下为自己找到的。 Matteo Garrone的《 Reality》&#xff08;2012年&#xff09;…

oracle 造数据脚本_Oracle数据库shell脚本--统计所有数据库用户信息及明细

概述今天主要分享一下两个shell脚本&#xff0c;主要是为了查看所有数据库用户及其表空间&#xff0c;统计某个指定用户的明细&#xff0c;下面一起来看看吧~数据库连接脚本use script settdb.sh for DB login details registry#!/bin/bashtmp_username$SH_USERNAMEtmp_passwor…

学维修电脑要多久_学厨师要多久才出师

学厨师一般要学多久&#xff1f;以苏州新东方学厨师为例&#xff1a;厨师培训可以分为长期、短期。中餐、西餐、西点长期专业学习时间1-3年不等&#xff1b;短期专业从7天到8个月不等&#xff0c;主要是按学习内容来划分&#xff0c;比如学苏式汤面&#xff0c;只需要半个月左右…

Linux 命令之 rpm -- RPM 软件包的管理工具

文章目录一、命令介绍二、语法结构三、常用选项用于查询和检查包用于安装、升级和删除包用于执行其他功能四、命令示例&#xff08;一&#xff09;查询和检查包1. 查看一个已安装包的信息&#xff08;版本、用途等&#xff09;2. 查看与指定程序相关的所有安装文件3. 查看一个已…

react核心虚拟dom_使用虚拟时间测试基于时间的React堆核心流

react核心虚拟domReactor Core实现了Reactive Streams规范&#xff0c;并处理了&#xff08;可能无限的&#xff09;数据流。 如果您感兴趣&#xff0c;请查看它提供的出色文档 。 在这里&#xff0c;我假设对Reactor Core库的Flux和Mono类型有一些基本的了解&#xff0c;并且将…

图书管理系统python语言-Python简易版图书管理系统

本文实例为大家分享了python图书管理系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 """ 图书管理系统 """ import random # books{书名:剩余数量, 书名:剩余数量} import time books {"防脱发指南": 5, "颈椎康…

docker 打包mysql_基于docker部署mysql的数据持久化问题

本人最近在使用docker部署mysql时&#xff0c;在持久化mysql数据时遇到了一个有趣的问题&#xff0c;将排查过程及思考记录在这里&#xff0c;以备后查。先简单描述下我遇到的问题&#xff1a;在mysql容器中创建了两个数据库&#xff0c;然后使用docker commit想要保存容器的修…

Linux 命令之 ls -- 列出指定目录下的内容

文章目录一、命令介绍二、语法格式三、常用选项四、参考示例&#xff08;一&#xff09;显示工作目录下&#xff08;当前目录&#xff09;所有的文件和目录&#xff08;二&#xff09;显示工作目录下所有的文件和目录&#xff08;三&#xff09;显示文件的详细信息&#xff0c;…

kotlin dsl_Spring Webflux – Kotlin DSL –实现的演练

kotlin dsl在以前的博客文章中&#xff0c;我描述了Spring Web Framework中的响应式编程支持Spring Webflux如何使用基于Kotlin的DSL使用户能够以非常直观的方式描述路由。 在这里&#xff0c;我想探索一些底层实现。 描述一组端点的样本DSL看起来像这样&#xff1a; package…

cad调了比例因子没反应_「室内设计」大神们都在用的9个CAD制图技巧,你会用几个?...

1、快捷特性面板如何调取&#xff1f;2、 如何快速恢复上一次删除物体&#xff1f;3、 如何快速关闭监视注释器&#xff1f;4、如何快速处理重复碎线&#xff1f;5、如何解决虚线在模型空间和布局空间显示不一致的问题&#xff1f;6、 如何快速更改图块名称&#xff1f;7、 PL线…

ubuntu 12下的apache+php+mysql_老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略

一、首先安装MySql&#xff1a;对于MySql来讲在整个过程中是相对独立的安装&#xff0c;并且我的ubuntu在以前做开发的时候就已经安装了MySql&#xff0c;所以以下只给出安装步骤&#xff1a;1、安装MySql的服务&#xff1a;sudo apt-get install mysql-server要注意的是安装过…

Linux 命令之 mv -- 移动文件/重命名文件

文章目录命令介绍语法格式常用选项命令示例&#xff08;一&#xff09;文件重命名&#xff08;二&#xff09;目录重命名&#xff08;三&#xff09;移动目录&#xff08;四&#xff09;移动目录且重命名&#xff08;五&#xff09;将一个目录下的内容移动到另外一个目录下&…

jax-rs jax-ws_迟来总比没有好:SSE或服务器发送的事件现在已在JAX-RS中

jax-rs jax-ws服务器发送的事件 &#xff08;或简称为SSE &#xff09;是非常有用的协议&#xff0c;它允许服务器通过HTTP将数据推送到客户端。 这是我们的Web浏览器支持的年龄&#xff0c;但是令人惊讶的是&#xff0c; JAX-RS规范在很长一段时间内都忽略了这一点。 尽管Jers…

根据录入的计算公式计算_小规模纳税人增值税计算公式是什么,什么人能被称为小规模纳税人?- 理财技巧...

摘要&#xff1a; 想必大家都知道小规模纳税人在增值税的缴纳上能够享受到不少的优惠措施和政策&#xff0c;最终可以少交不少钱&#xff01;那么什么人能被称为小规模纳税人呢&#xff1f;小规模纳税人增值税计算公式又是什么呢&#xff1f;下面赢家财富网就带大家详细了解一下…

Linux 命令之 chmod -- 改变文件或目录权限

文章目录一、命令介绍二、语法格式三、常用选项四、权限表达式&#xff08;一&#xff09;采用权限字母和操作符表达式&#xff08;二&#xff09;采用权限数字表达式五、参考示例&#xff08;一&#xff09;为拥有者、所属群组以及其他人添加关于directory1的读、写和执行权限…

12章总结

一.集合类概述 java.util包中提供了一些集合类&#xff0c;这些集合类又被称为容器。 集合类与数组的不同之处&#xff1a; 数组的长度是固定的&#xff0c;集合的长度是可变的&#xff1a;数组用来存放基本类型的数据&#xff0c;集合用来存放对象的引用。 常…

java亮剑_黄金矿工3-太空版

快速搜索机型:诺基亚 N70系列(176208)7610 3230 6600 6260 6620 6630 6670 6680 6681 6682 N70 N72 ;松下: X700 X800 ;联想: P930诺基亚 N73系列(240320)N73 5320 5320XM 5320di_XM 5630XM 5700 5700XM 5710XM 5730XM 6110 6110N 6120 6120C 6120ci 6121 6122C 6124C 6210S 62…

怎么知道跟交换机互联的交换机_怎么选择POE交换机

工作的呢&#xff1f;48V供电的就是标准PoE吗&#xff1f;下面我们简单讲解一下标准PoE和MCU PoE交换机&#xff08;单片机&#xff09;及非标PoE设备是怎么工作的。标准PoE和MCU PoE交换机&#xff08;单片机&#xff09;以及非标准PoE产品定义首先我们来看一下什么是标准PoE、…

并发查询parallel_惯用并发:flatMap()与parallel()– RxJava常见问题解答

并发查询parallel简单&#xff0c;有效和安全的并发是RxJava的设计原则之一。 然而&#xff0c;具有讽刺意味的是&#xff0c;它可能是该库中最容易被误解的方面之一。 让我们举一个简单的例子&#xff1a;假设我们有一堆UUID并且对于每个UUID &#xff0c;我们必须执行一组任务…

java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

import java.util.ArrayList;import java.util.regex.Matcher;import java.util.regex.Pattern;public class test {public static void main(String[] args) {getStrings(); //用正则表达式获取指定字符串内容中的指定内容System.out.println("********************"…