Linux压缩打包tar命令总结
命令简介
在Linux系统的维护、管理中,tar命令是一个使用频率很高的命令,tar命令的功能主要是将众多文件打包成一个tar文件并压缩,并且能保持文件的权限属性。tar其实最开始是用来做磁带备份存盘的,tar是tape archive的简称。后面扩展到不仅仅局限于磁带备份存盘。也能存放到文件系统中。tar命令版本众多,下面整理了一些常用的参数,具体以实际版本为准。
命令参数
参数 |
参数描述 |
-c |
创建新的档案文件 |
-C |
指定到要解压到的目录。注意:该目录必须存在 |
-f |
指定打包的文件名。在f之后要立即接打包文件名!不要再加参数! |
-x |
解压 |
-O |
将文件解压到标准输出 |
-p |
使用原文件的原来属性 |
-P |
创建归档文件,使用绝对路径 |
-t |
列出档案文件中的内容 |
-r |
向压缩归档文件末尾追加文件 |
-u |
更新原压缩包中的文件 |
-v |
显示详细过程 |
-z |
使用gzip压缩,一般格式为xx.tar.gz或xx. tgz |
-Z |
有compress |
-j |
使用bzip2压缩,一般格式为xxx.tar.bz2 |
--exclude |
在压缩过程中,排除某个文件 |
--remove-files |
在完成打包后,删除原文件夹 |
注意事项:
1:在上面的参数中, c/x/t 仅能存在一个!不可同时存在!例如,不可能同时压缩与解压缩。
2:-f: 指定打包的文件名,切记,这个参数是最后一个参数(不能再接其它参数),后面只能接打包文件名。
3:参数可以合并在一起,也可以单独分开。如下所示:
#tar -jcvf 2018-10-14.tar.bz2 ./2018-10-11
#tar -j -c -v -f 2018-10-14.tar.bz2 ./2018-10-11
使用示例
--打包当前目录下所有后缀为log类型的文件
[root@DB-Server logs]# tar -cvf backup_log.tar ./*.log
--查看打包了那些文件
[root@DB-Server logs]# tar -tf backup_log.ta
记住:如果文件是压缩格式,如何查看打包了那些文件呢? 是否需要参数z或f呢? 其实是不需要参数z或j也是能查看的。
[root@DB-Server logs]# tar -jcvf backup.tar.bz2 ./*.log
[root@DB-Server logs]# tar -tvf backup.tar.bz2
[root@DB-Server logs]# tar -tjvf backup.tar.bz2
[root@DB-Server full]# tar -tjvf full_2018-10-21_00_00_01.tar.bz2
注意:加上参数z或j也没有错,暂时不清楚区别。猜测有可能是自动进行了解压.
--查看是否打包了文件incr_2018-10-16_12_00_01.log
[root@DB-Server mysql]# tar -tvf logs.tar.bz2 | grep incr_2018-10-16_12_00_01.log
-rw-r--r-- root/root 118944 2018-10-21 10:16:01 home/mysqlbackup/logs/incr_2018-10-16_12_00_01.log
--解压打包的backup_log.tar文件
[root@DB-Server logs]# tar -xvf backup_log.tar
--打包压缩为bz2格式的文件
[root@DB-Server mysqlbackup]#tar -jcvf 2018-10-20.tar.bz2 ./2018-10-20
注意:使用bz2压缩的打包文件,后缀可以为filename.tar.bz2 或 filenam.tbz两种格式,视个人喜好、习惯而定。
--打包压缩为gz格式的文件
[root@DB-Server mysqlbackup]#tar -zcvf 2018-10-20.tar.gz ./2018-10-20
注意:使用gzip压缩的打包文件,后缀可以为filename.tgz 或filename.tar.gz两种格式,视个人喜好、习惯而定。
--打包压缩后删除原文件夹或原文件
[root@DB-Server mysqlbackup]tar -zcvf 2018-10-13.tar.gz /mysql_backup/2018-10-13 --remove-files
#参数remove-files会在/mysql_backup/2018-10-13目录打包压缩后,删除这个原文件夹。
--解压压缩格式为gz格式的打包文件
[root@DB-Server mysqlbackup]# tar -xjvf 2018-10-20.tar.bz2
[root@DB-Server mysqlbackup]# tar -xzvf 2018-10-20.tar.gz
--解压压缩文件中的某一个文件
#只要解压打包压缩文件中一个文件xtrabackup_checkpoints(绝对路径打包压缩)
[root@DB-Server full]# tar -jxvf full_2018-10-21_00_00_01.tar.bz2 \
/mysqlbackup/db_backup/2018-10-22/full/full_2018-10-22_00_00_01/xtrabackup_checkpoints
#相对路径的打包压缩文件解压单个文件
[root@DB-Server mysqlbackup]# tar -xjvf logs.tar.bz2 ./logs/incr_2018-10-13_16_10_01.log
./logs/incr_2018-10-13_16_10_01.log
--打包分片压缩
# tar -zcvp -f - 2018-10-18/ | split -b 2M -d -a 1 - mysq.tar.gz.
root@DB-Server mysql_db_backup]# tar -zcvpf - 2018-10-18/ | split -b 2M -d -a 1 - mysq.tar.gz.
2018-10-18/
2018-10-18/last_lsn
2018-10-18/incr/
2018-10-18/incr/incr_2018-10-18_23_02_29.tar.bz2
2018-10-18/incr/incr_2018-10-18_23_02_01.tar.bz2
2018-10-18/full/
2018-10-18/full/full_2018-10-17_23_01_33.tar.bz2
[root@DB-Server mysql_db_backup]# ls -lrt
total 15220
drwxr-xr-x. 4 root root 4096 Oct 18 23:01 2018-10-18
drwxr-xr-x. 4 root root 4096 Oct 19 09:16 2018-10-19
-rw-r--r--. 1 root root 35275 Oct 25 10:41 2008.tar.bz2
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.0
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.1
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.2
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.3
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.4
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.5
-rw-r--r--. 1 root root 2097152 Oct 25 11:03 mysq.tar.gz.6
-rw-r--r--. 1 root root 856929 Oct 25 11:03 mysq.tar.gz.7
# tar -zcvpf - ./2018-10-18 | split -b 2M - mysq.tar.gz.
--绝对路径打包压缩的相关案例
打包相对路径文件演示
[root@DB-Server db_backup]# ls -lrt
total 16
drwxr-xr-x 2 root root 4096 Oct 21 22:39 2018-10-20
drwxr-xr-x 3 root root 4096 Oct 21 22:39 2018-10-21
[root@DB-Server db_backup]#
#相对路径压缩,解压的时候没有任何问题
[root@DB-Server db_backup]# tar -jcvf 2018-10-21.tar.bz2 ./2018-10-21
#在当前路径下面解压
[root@DB-Server db_backup]# tar -xjvf 2018-10-21.tar.bz2
#解压到某个路径下面
[root@DB-Server db_backup]# tar -xjvf 2018-10-21.tar.bz2 -C /mysql/
如果是打包压缩时使用绝对路径,这个就相对而言比较麻烦,尤其是将打包文件在异机(其它服务器)解压.例如,下面full_2018-10-20_00_00_02.tar.bz2文件是将/mysql/mysql_backup/db_backup/2018-10-21这个目录下面的所有文件按绝对路径打包,然后将文件拷贝到这台服务解压。输出信息有“tar: Removing leading `/' from member names”,它是tar删除了绝对路径最开始 / 而进行的提示。使用tar对文件打包时,一般不建议使用绝对路径.
[root@DB-Server mysqlbackup]# ls -lrt
total 683016
-rw-r--r-- 1 root root 698691092 Oct 21 10:13 full_2018-10-20_00_00_02.tar.bz2
drwxr-xr-x 2 root root 12288 Oct 21 21:14 logs
drwxr-xr-x 4 root root 4096 Oct 21 23:07 db_backup
[root@DB-Server mysqlbackup]# pwd
/home/mysqlbackup
[root@DB-Server mysqlbackup]# tar -xjvf full_2018-10-20_00_00_02.tar.bz2
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/
tar: Removing leading `/' from member names
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/xtrabackup_logfile
/mysql/mysql_backup/db_backup/2018-10-21/full/full_2018-10-21_00_00_02/ibdata1
............................................................
此时就会在当前目录下/home/mysqlbackup 下面生成mysql/mysql_backup/db_backup/2018-10-21等目录。这个往往不是我们想要的,能否直接将2018-10-21这个文件夹解压到当前目录呢?答案是不行。即使使用参数-C,也依然生成不了我们想要的。
[root@DB-Server mysqlbackup]# tar -xjvf full_2018-10-20_00_00_02.tar.bz2 -C /home/mysqlbackup/
当然,如果使用-P参数打包绝对路径文件,那么解压的时候,也会按原绝对路径生成。而不是在当前目录或指定目录,生成很深的路径。
#这样会按原绝对路径的方式解压
[root@DB-Server mysqlbackup]# tar -xjvPf full_2018-10-20_00_00_02.tar.bz2
参考资料:
http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html
Linux压缩打包tar命令总结的更多相关文章
- Linux文件的加压缩解压缩tar命令
linux下使用tar命令 解压 语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用.主选项:c 创建新的档案 ...
- Linux压缩打包方法连载之三:bzip2, bzcat 命令
Linux压缩打包方法有多种,本文集中讲解了bzip2, bzcat 命令的使用.案例说明,例如# 与 gzip 同样的,都是在计算压缩比的参数,-9 最佳,-1 最快. AD: 我们遇见Linux压 ...
- linux中的 tar命令的 -C 参数,以及其它一些参数(转)
linux中的 tar命令的 -C 参数,以及其它一些参数 复制源:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.htmltar命令 ...
- linux中的 tar命令的 -C 参数,以及其它一些参数
tar命令的-C参数 $ tar -cvf file2.tar /home/usr2/file2 tar: Removing leading '/' from members names hom ...
- linux压缩打包等
删除 rm -rf 目录 tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/ ...
- Linux 压缩、解压缩命令
Linux 压缩.解压缩命令 tar 语法命令 tar [options-] [files] options: 选择 描述 -A 追加tar文件至归档 -c 创建一个新文档 -d 找出归档和文件系统的 ...
- Linux打包与压缩及tar命令详解
打包和压缩 在linux中,打包和压缩可以说是两个不同的概念,弄清这两个概念对于我们理解复杂的文件后缀有非常大的帮助 打包 将若干个文件和目录打包在一起变成一个大的文件,这时只是简单的打包,所以一 ...
- Linux压缩打包命令
tar命令 [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 .... 参数 -c :建立一个压缩文件的参数指令(create 的意思): -x :解开一个压缩文件的参数 ...
- linux下用tar命令将当前目录下文件按子目录压缩归档
作者:iamlaosong 日常工作中,我们常常需要用tar命令将历史文件压缩归档,再删除源文件,以便节省空间.如果压缩归档成一个文件,就比较简单,用一条命令即可,如命令:tar -czf bak20 ...
随机推荐
- [Swift]LeetCode882. 细分图中的可到达结点 | Reachable Nodes In Subdivided Graph
Starting with an undirected graph (the "original graph") with nodes from 0 to N-1, subdivi ...
- Android studio的错误:radle sync failed: Cause: failed to find target android-21 :
这个错误在Android studio中经常出现,特别是你在编译不同的app的时候,到底是什么原因会导致该错误产生呢? 首先看错误信息,是找不到目标android版本-21导致的,这就很明显了,你的目 ...
- django启动server报错Error: That port is already in use.
这种一般是端口错误,一般是要把端口关掉,这里提供了两种方法. 方法一:直接命令: sudo lsof -t -i tcp:8000 | xargs kill -9 方法二:脚本:名字manage.py ...
- 执行find / -name *.sh时报错 find: 路径必须在表达式之前: start-ressvr-release.sh
想查找一个包含4000多文件的目录下所有.sh结尾的文件 使用命令 find ./ -name *.sh (本身已经在要查找的目录里了) 结果报错: 解决方法一:find ./ - ...
- 完整的http请求分析
首先我们要明白什么是http. http:超文本传输协议(HTTP,HyperText Transfer Protocol). 超文本传输协议是互联网上应用最为广泛的一种网络协议.所有的WWW文件都必 ...
- npm私有仓库 配置verdaccio在docker环境
前端开发过程中,少不了自己封装一些通用的包,但又不想放在公共的平台,所以搭建一个npm私有的仓库是很有必要的. 在这里简单介绍如何使用 verdoccio 在docker环境下的配置.verdocci ...
- 通俗易懂讲解TCP流量控制机制,了解一下
上篇文章讲了TCP拥塞控制机制的原理,没看过的不妨看下:5分钟读懂拥塞控制,这篇文章讲讲TCP流量控制机制. 一.为什么需要流量控制? 双方在通信的时候,发送方的速率与接收方的速率是不一定相等,如果发 ...
- MongoDB Export & Import
在使用MongoDB数据库的过程中,避免不了需要将数据进行导入和导出的工作,下面为具体的用法.注意 不同的数据库版本可能存在略微的差异,所以在使用时,先查看 --help 来进行确认.下面的为3.6版 ...
- 探索Windows命令行系列(1):导航目录
探索Windows命令行系列(1):导航目录 探索Windows命令行系列(2):命令行工具入门 探索Windows命令行系列(3):命令行脚本基础 探索Windows命令行系列(4):通过命令操作文 ...
- linux添加C#运行环境
linux是不带C#的运行环境的,同样的还有.NET. 有一个叫做Mono的很好用http://www.go-mono.com/,有给docker,而且有环境的选择,要注意. 安好后有给样例的程序,编 ...