Linux Command tar 压缩

简介: Linux Command tar 压缩

Linux Command tar 压缩

文章目录

Linux Command tar 压缩

1. 简介

2. 格式

3. 参数

4. 举例

4.1 将文件全部打包成tar包

4.2 查阅上述 tar包内有哪些文件

4.3 将tar 包解压缩

4.4 只将 /tar 内的 部分文件解压出来

4.5 文件备份下来,并且保存其权限

4.6 在文件夹当中,比某个日期新的文件才备份

4.7 备份文件夹内容是排除部分文件

4.8 分卷压缩与解压缩

1. 简介

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。

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


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

2. 格式

tar[必要参数][选择参数][文件]

3. 参数

-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
--version 显示版本信息

4. 举例

4.1 将文件全部打包成tar包

[root@localhost test]$ ls -al log2012.log
---xrw-r-- 1 root root 302108 11-13 06:03 log2012.log
[root@localhost test]$ tar -cvf log.tar log2012.log 
log2012.log
[root@localhost test]$ tar -zcvf log.tar.gz log2012.log
log2012.log
[root@localhost test]$ tar -jcvf log.tar.bz2 log2012.log 
log2012.log
[root@localhost test]$ ls -al *.tar*
-rw-r--r-- 1 root root 307200 11-29 17:54 log.tar
-rw-r--r-- 1 root root   1413 11-29 17:55 log.tar.bz2
-rw-r--r-- 1 root root   1413 11-29 17:54 log.tar.gz

说明:

  • tar -cvf log.tar log2012.log 仅打包,不压缩!
  • tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
  • tar -zcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩

在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz.tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。

4.2 查阅上述 tar包内有哪些文件

[root@localhost test]$ tar -ztvf log.tar.gz
---xrw-r-- root/root    302108 2012-11-13 06:03:25 log2012.log

说明:

由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上 z 这个参数了。

4.3 将tar 包解压缩

[root@localhost test3]$ ll
总计 0
[root@localhost test3]$ tar -zxvf /opt/soft/test/log.tar.gz
log2012.log
[root@localhost test3]$ ls
log2012.log

说明:

在预设的情况下,我们可以将压缩档在任何地方解开的

4.4 只将 /tar 内的 部分文件解压出来

[root@localhost test]$ tar -zcvf log30.tar.gz log2012.log log2013.log 
log2012.log
log2013.log
[root@localhost test]$ ls -al log30.tar.gz 
-rw-r--r-- 1 root root 1512 11-30 08:19 log30.tar.gz
[root@localhost test]$ tar -zxvf log30.tar.gz log2013.log
log2013.log
[root@localhost test]$ ll
-rw-r--r-- 1 root root   1512 11-30 08:19 log30.tar.gz
[root@localhost test]$ cd test3
[root@localhost test3]$ tar -zxvf /opt/soft/test/log30.tar.gz log2013.log
log2013.log
[root@localhost test3]$ ll
总计 4
-rw-r--r-- 1 root root 61 11-13 06:03 log2013.log

说明:

我可以透过 tar -ztvf 来查阅 tar 包内的文件名称,如果单只要一个文件,就可以透过这个方式来解压部分文件!

4.5 文件备份下来,并且保存其权限

[root@localhost test]# ll
总计 0
-rw-r--r-- 1 root root      0 11-13 06:03 log2014.log
-rw-r--r-- 1 root root      0 11-13 06:06 log2015.log
-rw-r--r-- 1 root root      0 11-16 14:41 log2016.log
[root@localhost test]$ tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log 
log2014.log
log2015.log
log2016.log
[root@localhost test]$ cd test6
[root@localhost test6]$ ll
[root@localhost test6]$ tar -zxvpf /opt/soft/test/log31.tar.gz 
log2014.log
log2015.log
log2016.log
[root@localhost test6]$ ll
总计 0
-rw-r--r-- 1 root root 0 11-13 06:03 log2014.log
-rw-r--r-- 1 root root 0 11-13 06:06 log2015.log
-rw-r--r-- 1 root root 0 11-16 14:41 log2016.log

说明:

这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时

4.6 在文件夹当中,比某个日期新的文件才备份

[root@localhost soft]$ tar -N "2012/11/13" -zcvf log17.tar.gz test
tar: Treating date `2012/11/13' as 2012-11-13 00:00:00 + 0 nanoseconds
test/test/log31.tar.gz
test/log2014.log
test/linklog.log
test/log2015.log
test/log2013.log
test/log2012.log
test/log2017.log
test/log2016.log
test/log30.tar.gz
test/log.tar
test/log.tar.bz2
test/log.tar.gz

4.7 备份文件夹内容是排除部分文件

[root@localhost test]$ tree scf
scf
|-- bin
|-- doc
|-- lib
|-- service
[root@localhost test]$ tar --exclude scf/service -zcvf scf.tar.gz scf/* 
scf/bin/
scf/doc/
scf/lib/

4.8 分卷压缩与解压缩

将10G大小的log文件2017.log打包压缩并分割成多个100m的文件

# 分卷压缩gz
$ tar zcf - 2017.log |split -d -b 100m - logs.tar.gz.
# 生成文件: logs.tar.gz.00 logs.tar.gz.01
# 分卷压缩bz2
$ tar jcf - 2017.log |split -d -b 100m - logs.tar.bz2.
# 生成文件: logs.tar.bz2.00 logs.tar.bz2.01
合并分卷解压缩
# 解压gz分卷
$ cat logs.tar.gz* | tar zx
# 解压bz2分卷
$ cat logs.tar.bz2* | tar jx

更多阅读:

  1. Linux Command lz4 压缩
  2. Linux Command tar 压缩
  3. Linux Command gzip 压缩
  4. Linux Command zip 压缩
相关文章
|
3天前
|
存储 Linux 程序员
tar命令详解:linux文件打包神器
tar命令详解:linux文件打包神器
|
25天前
|
Linux
linux 压缩解压
linux 压缩解压
12 1
|
1月前
|
存储 算法 Linux
3分钟带你快速学会Linux tar 命令
【4月更文挑战第24天】
42 1
3分钟带你快速学会Linux tar 命令
|
23天前
|
Ubuntu Linux
探索Linux中的bzip2命令:高效的数据压缩与解压缩
`bzip2`是Linux中用于高效数据压缩的命令,基于BWT和Huffman编码,尤其适合文本文件。虽然压缩速度较慢,但压缩率高于`gzip`。要安装`bzip2`,可使用各Linux发行版的包管理器。基本用法包括:使用`bzip2`命令压缩文件(默认删除源文件),添加`-d`解压缩,`-k`保留源文件。可通过循环或通配符压缩多个文件。了解更多选项,可运行`man bzip2`或`bzip2 --help`。对于高压缩率需求,`bzip2`是理想选择。
|
26天前
|
Linux
14. 【Linux教程】文件压缩与解压
14. 【Linux教程】文件压缩与解压
18 0
|
1月前
|
算法 Linux Windows
linux中的压缩软件介绍
这些是Linux中一些常见的压缩软件工具,您可以根据需要选择合适的工具来压缩和解压缩文件。每种工具都有其特定的特点和压缩性能,因此根据具体情况选择合适的工具是重要的。
33 0
|
1月前
|
算法 Linux
Linux:文件增删 & 文件压缩指令
Linux:文件增删 & 文件压缩指令
15 0
|
1月前
|
存储 算法 Unix
Linux压缩&解压缩
Linux压缩&解压缩
60 0
Linux压缩&解压缩
|
18小时前
|
Linux 数据处理
探索Linux下的readelf命令:深入了解ELF文件
`readelf`是Linux下分析ELF文件的命令行工具,用于查看文件头、节区、符号表等信息。支持可执行文件、共享库等多种类型。常用选项有`-h`(文件头)、`-l`(程序头)、`-S`(节区)、`-s`(符号表)、`-r`(重定位)和`-d`(动态节区)。结合其他工具如`objdump`,能深入理解二进制文件,助力开发和调试。
|
1天前
|
IDE Linux 数据处理
探索Linux中的`pydoc`命令:Python文档生成器的力量
`pydoc`是Linux上Python的文档生成和查看工具,尤其对数据科学家有价值。它从docstring生成模块、函数和类的文档,提供快速API参考。主要特点包括易用性、支持标准库和第三方库、跨平台。命令行示例:`pydoc pandas` 查看库文档,`pydoc numpy.array` 查看类详情,`pydoc -k 关键字` 进行搜索。使用时注意正确安装Python,编写清晰的docstring,并结合IDE以提升效率。