内容简介:在Linux系统的维护、管理中,tar命令是一个使用频率很高的命令,tar命令的功能主要是将众多文件打包成一个tar文件并压缩,并且能保持文件的权限属性。tar其实最开始是用来做磁带备份存盘的,tar是tape archive的简称。后面扩展到不仅仅局限于磁带备份存盘。也能存放到文件系统中。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
注意: 加上参数z或j也没有错,暂时不清楚区别。
--解压打包的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
-- 打包压缩为gz格式的文件
[root@DB-Server mysqlbackup]#tar -zcvf 2018-10-20.tar.gz ./2018-10-20
-- 打包压缩后删除原文件夹或原文件
[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目录打包压缩后,删除这个原文件夹。
--绝对路径打包压缩的相关案例
打包相对路径文件演示
[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——文件与文件系统的压缩,打包与备份
- tio-webpack 2.0.2 发布,传统前端的编译打包压缩工具
- esbuild 0.9.0 发布,比 Webpack 快 100 倍的打包和压缩工具
- golang压缩和解压缩zip文件
- bitcoin:压缩公钥与未压缩公钥
- 一句话轻松实现压缩图片和文件压缩
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。