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

  linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。

概念

打包:将一大堆文件或目录变成一个总的文件【tar命令】

压缩:将一个大的文件通过一些压缩算法变成一个小文件【gzip,bzip2等】

  Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

命令

  tar(选项)(参数)

选项说明

-A或--catenate:新增文件到以存在的备份文件;

-B:设置区块大小;

-c或--create:建立新的备份文件;

-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

-d:记录文件的差别;

-x或--extract或--get:从备份文件中还原文件;

-t或--list:列出备份文件的内容;

-z或--gzip或--ungzip:通过gzip指令处理备份文件;

-Z或--compress或--uncompress:通过compress指令处理备份文件;

-f<备份文件>或--file=<备份文件>:指定备份文件;

-v或--verbose:显示指令执行过程;

-r:添加文件到已经压缩的文件;

-u:添加改变了和现有的文件到已经存在的压缩文件;

-j:支持bzip2解压文件;

-v:显示操作过程;

-l:文件系统边界设置;

-k:保留原有文件不覆盖;

-m:保留文件不被覆盖;

-w:确认压缩文件的正确性;

-p或--same-permissions:用原来的文件权限还原文件;

-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;

-N <日期格式> 或 --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;

--exclude=<范本样式>:排除符合范本样式的文件。

参数说明

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

常用示例

1、打包单、多文件、文件夹

[root@CTU1000094955 exceltemplates]# tar -cvf xxx.tar test1.xlsx test2.xlsx testfolder/
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
[root@CTU1000094955 exceltemplates]# ll
total
-rw-r----- root root Nov : test1.xlsx
-rw-r----- root root Nov : test2.xlsx
drwxr-x--- root root Nov : testfolder
-rw-r--r-- root root Nov : xxx.tar

2、遍历包里面的文件(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# tar -tvf xxx.tar
-rw-r----- root/root -- : test1.xlsx
-rw-r----- root/root -- : test2.xlsx
drwxr-x--- root/root -- : testfolder/
-rw-r----- root/root -- : testfolder/test3.xlsx

3、将tar包里面的文件解压缩出来(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# ls
xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z
[root@CTU1000094955 exceltemplates]# tar -xvf xxx.tar
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
[root@CTU1000094955 exceltemplates]# ls
test1.xlsx test2.xlsx testfolder xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z

4、将tar包里面的部分文件解压缩出来(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# ls
xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z
[root@CTU1000094955 exceltemplates]# tar -xvf xxx.tar test1.xlsx
test1.xlsx
[root@CTU1000094955 exceltemplates]# ls
test1.xlsx xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z

5、增加文件到tar包里面(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# tar -rf xxx.tar test1.xlsx
[root@CTU1000094955 exceltemplates]# tar -tvf xxx.tar
-rw-r----- root/root -- : test1.xlsx
-rw-r----- root/root -- : test2.xlsx
drwxr-x--- root/root -- : testfolder/
-rw-r----- root/root -- : testfolder/test3.xlsx
-rw-r----- root/root -- : test1.xlsx #追加添加了个同名文件

6、更新文件到tar包(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# tar -uvf xxx.tar test1.xlsx 
[root@CTU1000094955 exceltemplates]# tar -tvf xxx.tar
-rw-r----- root/root -- : test1.xlsx
-rw-r----- root/root -- : test2.xlsx
drwxr-x--- root/root -- : testfolder/
-rw-r----- root/root -- : testfolder/test3.xlsx
-rw-r----- root/root -- : test1.xlsx  #更新文件并没有新增文件,只会替换

7、-C的使用(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数) 

  -C, --directory=DIR指定目录,使用了-C参数改变目录为-C后面目录,不管是在打包还是解压都很有用。

  用法:tar temp.tar file -C fileDir

$ cd temp
$ ls
img1 img2 img3
$ tar -cf img.tar temp/*
这样打包会将temp目录也打包进去,使用下面带有-C参数的命令可以去掉路径信息
$ tar -cf img.tar * -C temp

8、解压包到任意文件夹(对gzip以及dzip2的压缩文件同样有效,只不过需要加上-z或者-j参数)

[root@CTU1000094955 exceltemplates]# tar -xvf OOOO.tar -C temp
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
xxx.tar
xxx.tar.bz2
xxx.tar.gz
xxx.tar.Z
[root@CTU1000094955 exceltemplates]# cd temp
[root@CTU1000094955 temp]# ls
test1.xlsx test2.xlsx testfolder xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z

9、打包后用gzip压缩

[root@CTU1000094955 exceltemplates]# tar -zcvf xxx.tar.gz test1.xlsx test2.xlsx testfolder/
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
[root@CTU1000094955 exceltemplates]# ls
test1.xlsx test2.xlsx testfolder xxx.tar xxx.tar.gz

10、遍历gzip压缩后的打包文件(z可有可无的)

[root@CTU1000094955 exceltemplates]# tar -ztvf xxx.tar.gz
-rw-r----- root/root -- : test1.xlsx
-rw-r----- root/root -- : test2.xlsx
drwxr-x--- root/root -- : testfolder/
-rw-r----- root/root -- : testfolder/test3.xlsx

11、打包后用bzip2压缩

[root@CTU1000094955 exceltemplates]# tar -cjvf xxx.tar.bz2 test1.xlsx test2.xlsx testfolder/
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
[root@CTU1000094955 exceltemplates]# ls
test1.xlsx test2.xlsx testfolder xxx.tar xxx.tar.bz2 xxx.tar.gz

12、遍历bzip2压缩后的打包文件(j可有可无的)

[root@CTU1000094955 exceltemplates]# tar -jtvf xxx.tar.bz2
-rw-r----- root/root -- : test1.xlsx
-rw-r----- root/root -- : test2.xlsx
drwxr-x--- root/root -- : testfolder/
-rw-r----- root/root -- : testfolder/test3.xlsx

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

13、打包后用compress压缩

[root@CTU1000094955 exceltemplates]# tar -cZvf xxx.tar.Z test1.xlsx test2.xlsx testfolder/
test1.xlsx
test2.xlsx
testfolder/
testfolder/test3.xlsx
[root@CTU1000094955 exceltemplates]# ls
test1.xlsx test2.xlsx testfolder xxx.tar xxx.tar.bz2 xxx.tar.gz xxx.tar.Z

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

[root@localhost test]# ll
总计
-rw-r--r-- root root - : log2014.log
-rw-r--r-- root root - : log2015.log
-rw-r--r-- root root - : 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
总计
-rw-r--r-- root root - : log2014.log
-rw-r--r-- root root - : log2015.log
-rw-r--r-- root root - : log2016.log

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

15、比某个日期新的文件才备份

[root@localhost soft]# tar -N "2012/11/13" -zcvf log17.tar.gz test
tar: Treating date `//' as 2012-11-13 00:00:00 + 0 nanoseconds
test/test/log31.tar.gz
test/log2014.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

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

  命令:tar --exclude scf/service -zcvf scf.tar.gz scf/*

[root@localhost test]# tree scf
scf
|-- bin
|-- doc
|-- lib
`-- service
`-- deploy
|-- info
`-- product
directories, files
[root@localhost test]# tar --exclude scf/service -zcvf scf.tar.gz scf/*
scf/bin/
scf/doc/
scf/lib/

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

linux命令学习之:tar的更多相关文章

  1. 别出心裁的Linux命令学习法

    别出心裁的Linux命令学习法 操作系统操作系统为你完成所有"硬件相关.应用无关"的工作,以给你方便.效率.安全.操作系统的功能我总结为两点:管家婆和服务生: 管家婆:通过进程.虚 ...

  2. Linux命令学习

    Linux命令学习 Ubuntu常用快捷键 •Ctrl+Alt+T: 打开终端 •Ctrl+Shift+T: 新建标签页 •Tab: 终端中命令补全 •Alt+数字N: 终端中切换到第N个标签页 •↑ ...

  3. 《Linux命令学习手册》系列分享专栏

    <Linux命令学习手册>系列分享专栏 <Linux命令学习手册>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/207 ...

  4. 20155229付钰涵-虚拟机安装及LINUX命令学习

    安装Ubuntu遇到的问题 问题一: 新建虚拟电脑的版本只有32-bit,与老师所给教程中的64-bit不符.为此我上百度搜寻了答案. 第一种方法: 控制面板--程序与功能--启动或关闭windows ...

  5. Linux命令学习笔记目录

    Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...

  6. 常见Linux命令学习

    Linux命令学习 命令分类: 文件处理命令 权限管理命令 文件搜索命令 帮助命令 用户管理命令 压缩解压命令 网络命令 关机重启命令 1.文件处理命令 命令格式:命令 [-选项] [参数] 例:ls ...

  7. Linux命令学习总结之rmdir命令的相关资料可以参考下

    这篇文章主要介绍了Linux命令学习总结之rmdir命令的相关资料,需要的朋友可以参考下(http://www.nanke0834.com) 命令简介: rmdir命令用用来删除空目录,如果目录非空, ...

  8. linux命令学习之:chmod

    chmod命令用来变更文件或目录的权限.在Linux系统家族里,文件或目录权限的控制分别以读取R.写入W.执行X3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录 ...

  9. Linux命令学习笔记1

    1.Linux命令学习 2.Mkdir /data       -创建文件夹 在/下创建文件夹 data 3.Cd               -目录切换 列如cd / 4.Touch /data/1 ...

  10. 安装虚拟机&Linux命令学习

    安装虚拟机&Linux命令学习 基于VirtualBox虚拟机安装Ubuntu 1.下载安装VirtualBox 根据自己电脑(32位操作系统)的实际情况,我在网上找了相应的VirtualBo ...

随机推荐

  1. 初识AutoMapper

    在开始本篇文章之前,先来思考一个问题:一个项目分多层架构,如显示层.业务逻辑层.服务层.数据访问层.层与层访问需要数据载体,也就是类.如果多层通用一个类,一则会暴露出每层的字段,二者会使类字段很多,而 ...

  2. 【387】Python format 格式化函数

    参考:Python format 格式化函数 # 保留小数点后两位 f'{3.1415926:.2f}' # 带符号保留小数点后两位 f'{3.1415926:+.2f}' f'{-1:+.2f}' ...

  3. 扩展C#与元编程

    扩展C#与元编程 https://www.cnblogs.com/knat/p/4580393.html https://www.cnblogs.com/knat/p/4584023.html 扩展C ...

  4. 带报表的asp.net项目不要升级

    原来项目是用vs2008开发的,框架是3.5的.刚去公司项目就感觉比较乱,来来去去了几波人.所以我想统一把它升级成vs2010框架4.0. 结果页面经常报错,什么脚本找不到不存.后台脚本是用这句来添加 ...

  5. C# windows服务:如何获取服务程序所在的文件夹

    AppDomain.CurrentDomain.BaseDirectory 就这么一句话

  6. UITableView性能的优化()

    1.0 使用不透明视图 不透明的视图可以极大地提高渲染的速度. 2.0 不要重复创建不必要的cell 也就是我们常说的 循环利用机制 (建立缓冲池) 3.0  减少视图的数目 4.0  不要做多余的绘 ...

  7. Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans.xsd'

    明明项目没错误,但application.xml就报了错误,这是什么问题呢? 问题在于我们找不到org/springframework/beans/spring-beans这个包,也就是我们的spri ...

  8. Java NIO Overview

    Java NIO Overview Channels and Buffers Selectors   Jakob JenkovLast update: 2014-06-23

  9. Linux下怎么创建和进入带有空格的文件夹

    有时候需要创建带有空格的文件夹,虽然这不是一个好的习惯,但是偶尔会遇到.用的最多的是很多时候需要进入带有空格的文件夹,如"a b"是一个文件夹名. 创建:mkdir "a ...

  10. python网络编程之开启进程的方式

    标签(空格分隔): 开启进程的方式 multiprocessing模块介绍: python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在pyth ...