linux每日命令(31):tar命令
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。
首先要弄清两个概念:打包和压缩。
打包:是指将一大堆文件或目录变成一个总的文件.
压缩:则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。
linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
一.命令格式
tar [必要参数] [选择参数] [文件]
二. 命令功能
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
三. 命令参数
必要参数
| 参数 | 描述 |
|---|---|
| -A | 或--catenate 新增压缩文件到已存在的压缩文件 |
| -B | 或--read-full-records,读取数据时重设区块大小。 |
| -c | 或--create,建立新的压缩文件 |
| -d | 或-diff,记录文件的差别 |
| -r | 或--append 新增文件到已存在的压缩文件的结尾部分 |
| -u | 或--update 仅置换较压缩文件内的文件更新的文件 |
| -x | 或--extrac,从压缩的文件中提取文件 |
| -t | 或--list ,列出压缩文件的内容 |
| -z | 或--gzip或--ungzip,通过gzip指令解压文件 |
| -j | 通过bzip2指令解压文件 |
| -p | 或--same-permissions 用原来的文件权限还原文件 |
| -Z | 通过compress指令解压文件 |
| -N<日期格式> | 或--newer=<日期时间> ,只将较指定日期更新的文件保存到备份文件里。 |
| -v | 显示操作过程 |
| -l | 文件系统边界设置 |
| -k | 或--keep-old-files, 解压文件时,不覆盖已有的文件 |
| -m | 或--modification-time ,解压文件时,不变更文件的更改时间 |
| -W | 或--verify,压缩文件时,确认文件正确无误 |
选择参数
| 参数 | 描述 |
|---|---|
| -b | 设置区块数目 |
| -C | 切换到指定目录 |
| -f | 指定压缩文件 |
| --help | 显示帮助信息 |
| --version | 显示版本信息 |
四. 常见解压、压缩命令
tar
打包:tar cvf FileName.tar DirName (将目录Dirname及其下面的目录、文件打包成名为FileName.tar的包)
解包:tar xvf FileName.tar
(注:tar是打包,不是压缩!)
.gz
压缩: gzip FileName
解压1: gunzip FileName.gz
解压2: gzip -d FileName.gz
.tar.gz 和 .tgz
压缩:tar zcvf FileName.tar.gz DirName
解压:tar zxvf FileName.tar.gz
.bz2
压缩: bzip2 -z FileName
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
解压:tar jxvf FileName.tar.bz2
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
.tar.bz
解压:tar jxvf FileName.tar.bz
.Z
压缩:compress FileName
解压:uncompress FileName.Z
.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
解压:tar Zxvf FileName.tar.Z
.zip
压缩:zip FileName.zip DirName
解压:unzip FileName.zip
.rar
压缩:rar a FileName.rar DirName
解压:rar x FileName.rar
五. 使用实例
1:将文件全部打包成tar包
命令:
tar -cvf log.tar 1.log
tar -zcvf log.tar.gz 1.log
tar -jcvf log.tar.bz2 1.log
输出:
[root@localhost test]# ll 1.log
-rw-r--r-- 1 root root 3743 Nov 30 09:51 1.log
[root@localhost test]# tar -cvf log.tar 1.log
1.log
[root@localhost test]# tar -zcvf log.tar.gz 1.log
1.log
[root@localhost test]# tar -jcvf log.tar.bz2 1.log
1.log
[root@localhost test]# ll *.tar*
-rw-r--r-- 1 root root 10240 Nov 30 09:53 log.tar
-rw-r--r-- 1 root root 1798 Nov 30 09:55 log.tar.bz2
-rw-r--r-- 1 root root 1816 Nov 30 09:54 log.tar.gz
说明:
tar -cvf log.tar 1.log 仅打包,不压缩!
tar -zcvf log.tar.gz 1.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 1.log 打包后,以 bzip2 压缩
在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。
2:查阅上述 tar包内有哪些文件
命令:
tar -ztvf log.tar.gz
输出:
[root@localhost test]# tar -ztvf log.tar.gz
-rw-r--r-- root/root 3743 2018-11-30 09:51 1.log
说明:
由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上 z 这个参数了。
3:将tar 包解压缩
命令:
tar -zxvf /home/hc/test/log.tar.gz
输出:
[root@localhost test]# cd test2
[root@localhost test2]# ls
[root@localhost test2]# tar -zxvf /home/hc/test/log.tar.gz
1.log
[root@localhost test2]# ls
1.log
说明:
在预设的情况下,我们可以将压缩档在任何地方解开的,比如此处就是在test2目录下解压了test目录下的log.tar.gz
4:只解压tar包里的部分文件
命令:
tar -zxvf /home/hc/test/log123.tar.gz 2.log
输出:
[root@localhost test2]# cd ../test
[root@localhost test]# ls
1.log 2.log 3.log log.tar log.tar.bz2 log.tar.gz
[root@localhost test]# tar -zcvf log123.tar.gz 1.log 2.log 3.log
1.log
2.log
3.log
[root@localhost test]# ll
total 36
-rw-r--r-- 1 root root 3743 Nov 30 09:51 1.log
-rw-r--r-- 1 root root 3743 Nov 30 09:51 2.log
-rw-r--r-- 1 root root 3743 Nov 30 09:51 3.log
-rw-r--r-- 1 root root 1943 Nov 30 10:07 log123.tar.gz
-rw-r--r-- 1 root root 10240 Nov 30 10:01 log.tar
-rw-r--r-- 1 root root 1810 Nov 30 10:01 log.tar.bz2
-rw-r--r-- 1 root root 1817 Nov 30 10:01 log.tar.gz
[root@localhost test]# cd ../test2
[root@localhost test2]# ls
1.log
[root@localhost test2]# tar -ztvf /home/hc/test/log123.tar.gz
-rw-r--r-- root/root 3743 2018-11-30 09:51 1.log
-rw-r--r-- root/root 3743 2018-11-30 09:51 2.log
-rw-r--r-- root/root 3743 2018-11-30 09:51 3.log
[root@localhost test2]# tar -zxvf /home/hc/test/log123.tar.gz 2.log
2.log
[root@localhost test2]# ls
1.log 2.log
说明:
此处是只解压出了log123.tar.gz包里的2.log文件,我们可以通过 tar -ztvf 来查阅 tar 包内的文件名称
5:在文件夹当中,比某个日期新的文件才备份
命令:
tar -N "2018/11/30" -zcvf log11.tar.gz .
输出:
[root@localhost test]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 30 10:23 1.log
-rw-r--r-- 1 root root 0 Nov 30 10:23 2.log
-rw-r--r-- 1 root root 0 Nov 30 10:23 3.log
[root@localhost test]# tar -N "2018/11/30" -zcvf log11.tar.gz ./*
tar: Option --after-date: Treating date `2018/11/30' as 2018-11-30 00:00:00
./1.log
./2.log
./3.log
[root@localhost test]# tar -N "2018/12/30" -zcvf log12.tar.gz ./*
tar: Option --after-date: Treating date `2018/12/30' as 2018-12-30 00:00:00
tar: ./1.log: file is unchanged; not dumped
tar: ./2.log: file is unchanged; not dumped
tar: ./3.log: file is unchanged; not dumped
tar: ./log11.tar.gz: file is unchanged; not dumped
[root@localhost test]# ll
total 8
-rw-r--r-- 1 root root 0 Nov 30 10:23 1.log
-rw-r--r-- 1 root root 0 Nov 30 10:23 2.log
-rw-r--r-- 1 root root 0 Nov 30 10:23 3.log
-rw-r--r-- 1 root root 128 Nov 30 10:56 log11.tar.gz
-rw-r--r-- 1 root root 45 Nov 30 10:57 log12.tar.gz
[root@localhost test]# tar -tzvf log11.tar.gz
-rw-r--r-- root/root 0 2018-11-30 10:23 ./1.log
-rw-r--r-- root/root 0 2018-11-30 10:23 ./2.log
-rw-r--r-- root/root 0 2018-11-30 10:23 ./3.log
[root@localhost test]# tar -tzvf log12.tar.gz
[root@localhost test]#
说明:
将当前目录下的更新时间比2018-11-30 00:00:00新的文件或目录进行压缩备份
6:备份文件夹内容时排除部分文件
命令:
tar --exclude ./log12.tar.gz -zcvf test.tar.gz ./*
输出:
[root@localhost test]# ls
1.log 2.log 3.log log11.tar.gz log12.tar.gz
[root@localhost test]# tar --exclude ./log12.tar.gz -zcvf test.tar.gz ./*
./1.log
./2.log
./3.log
./log11.tar.gz
[root@localhost test]# tar -tzvf test.tar.gz
-rw-r--r-- root/root 0 2018-11-30 10:23 ./1.log
-rw-r--r-- root/root 0 2018-11-30 10:23 ./2.log
-rw-r--r-- root/root 0 2018-11-30 10:23 ./3.log
-rw-r--r-- root/root 128 2018-11-30 10:56 ./log11.tar.gz
说明:
备份压缩当前目录下除log12.tar.gz文件以外的所有文件或目录
linux每日命令(31):tar命令的更多相关文章
- linux基础-第八单元 正文处理命令及tar命令
第八单元 正文处理命令及tar命令 使用cat命令进行文件的纵向合并 两种文件的纵向合并方法 归档文件和归档技术 归档的目的 什么是归档 tar命令的功能 tar命令的常用选项 使用tar命令创建.查 ...
- Linux基础(3)- 正文处理命令及tar命令、vi编辑器、硬盘分区、格式化及文件系统的管理和软连接、硬连接
一.正文处理命令及tar命令 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件1.txt(覆盖) 2) 将用户信息数据库文件和用户密码数据库文件纵向合并为一个文件2.txt(追加) ...
- Linux使用快捷键,who命令,rm命令,ps命令,cd,命令kill命令,find命令,grep命令,tar命令(gz、tar、bz2),用户管理,vim配置的一部分,相关命令
1.进入Ubuntu开场后的终端窗口的快捷键是: ctrl + alt+t:通过这个命令能够打开终端. ctrl + alt+t:通过这个命令能够打开终端. 再开一个tab选项卡式 ...
- 每天一个linux命令(27)--tar命令
通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候 tar 命令就是必不可少的一个功能强大的工具.Linux 中最流行的 tar 是麻雀虽小,五脏俱全. tar 命令可以为Linux ...
- Linux系统中的tar命令
时间一长什么东西都容易忘记,尤其是一些不常用的东西忘记的更快,所以避免忘记,就记录下来,可以方面使用的时候查询.Tar命令在linux系统中算是一个比较重要的命令,今天就针对该命令进行总结一下. 1. ...
- Linux命令:tar命令批量解压方法总结
tar命令批量解压方法总结 (2010-05-24 17:48:46) 转载▼ 标签: tar 批量解压 杂谈 分类: linux学习 由于linux的tar命令不支持批量解压,所以很多网友编写了好多 ...
- linux常用命令:tar 命令
通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar 命令可以为linu ...
- Linux命令学习-tar命令
Linux中,tar命令的全称是tape archive,主要作用是压缩和解压文件. 参数说明: -c 创建新的压缩档案 -x 解压档案 -t 列出压缩档案的内容 -z 使用gzip来解压和压缩,文件 ...
- linux常用命令(21)tar命令
通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux ...
- Linux 正文处理命令及tar命令 利用vi编辑器创建和编辑正文文件
要点回顾 1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) cp /etc/passwd . cat ./passwd >1.txt cp /etc/group ...
随机推荐
- 在Ubuntu中成功搭建KMS服务器
介绍 基于vlmcsd搭建的KMS服务器. 根据github上的说明,这个工具是用C写的,没有任何依赖,可以直接运行.而且它横跨几乎现在所有的系统平台,如Android, FreeBSD, Solar ...
- P2031 脑力达人之分割字串
P2031 脑力达人之分割字串字符串dp,f[i]表示主串到第i个字符,最多能分割成多少子串.f[i]=max(f[i],f[k]+1);k是能匹配到的前一位. #include<iostrea ...
- PLSQL Developer
1 intall oracle11gex start OracleXEClrAgent start OracleXETNSListener 2 install C:\Dev Tool\instant ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- django——inclusion_tag
inclusion_tag() 原型: django.template.Library.inclusion_tag() 主要作用:通过渲染一个模板来显示一些数据. 例如,Django的Admin界面使 ...
- PHP算式验证码和汉字验证码的实现方法
在PHP网站开发中,验证码可以有效地保护我们的表单不被恶意提交,但是如果不使用算式验证码或者汉字验证码,仅仅使用简单的字母或者数字验证码,这样的验证码方案真的安全吗? 大家知道简单数字或者字母验证码很 ...
- php在windows下发送邮件实现
一.使用PHP内置的mail()函数 看了一下手册,就直接开始写代码了,如下: <?php $to = "test@126.com"; //收件人 $subject = &q ...
- 2016年3月8日Android实习日记
1.出现fragment后台栈的bug. bug描述:当点击加入后台栈的操作按钮改变指定控件的内容之后,称为A操作:接下来又点击其它没有操作后台栈的按钮来修改原来指定的控件内容,称为B操作.然后点击b ...
- 关于Gevent的使用指北
关于Gevent的使用指北 只是看了入门指南,和一个翻译文档.写一下个人读书心得. 其实看完之后,第一个反映就是asyncio这个系统库,感觉gevent现在所做的一些事情是与asyncio很像的,但 ...
- ImageMagick简单记录
一.安装 mac下的安装非常简单 brew search ImageMagick brew install xxx 安装后,可验证 magick logo: logo.gif identify log ...