每天一个Linux命令(tar)

温馨提示----->素材来源:鸟哥私房菜和优秀的博客以及自身的感悟!

tar目标:打包、打包和压缩(一体化)、以及解压缩和解打包(一体化)!

打包:将多个文件(宏观意义上的)打包成一个文件!

提示:tar本身的功能是解(打包),压缩是在打包或解打包的过程中调用其他的压缩或解压缩程序!因此引申出查看打包和打包后压缩文件的内容(不进行实际解压缩)!

一、后缀名与对应程序的关系(约定俗成--->理解LInux文件的后缀名与软件没有必然的联系!

文件后缀名 说明
*.zip zip 程序打包压缩的文件
*.rar rar 程序压缩的文件
*.7z 7zip 程序压缩的文件
*.tar tar 程序打包,未压缩的文件
*.gz gzip 程序 (GNU zip) 压缩的文件
*.xz xz 程序压缩的文件
*.bz2 tar 打包,gzip 程序压缩的文件
*.tar.gz tar打包,gzip程序压缩的文件
*.tar.xz tar打包,xz程序压缩的文件
*.tar.bz2 tar打包,bzip2程序压缩的文件
*.tar.7z tar打包,7z程序压缩的文件

gzip压缩命令---->解压缩(zip,gzip,compress等软件所压缩的文件)

unzip---->解压 *.zip

参数说明

无参--->压缩和删除源文件(缺省)

d------->解压缩的参数

k-------->保留源文件

v--------->压缩比信息

c--------->将压缩过程中产生的数据输出到屏幕上(常结合重定向---> '>')

需求1:读取纯文本文件被压缩后的压缩文件---->{z,b,xz}{cat,less,more}------>相应的后缀名

需求2:从压缩文件中找数据(zgrep,bzgrep,xzgrep,)

说明:压缩效率--->gzip---->bzip2---->xz

==========================分割线=========================================

打包:将多个文件或目录打包成一个大文件(观察打包后的文件属性!)--->补充"vim  *.tar"

需求3:打包(基础)

tar -cvf  待打包的文件或者目录(默认是当前目录)

c:create
v:verbose
f:file(广义)

说明:建立打包文件(c),在此过程中查看(v)被打包(处理)的文件名!

需求3:解打包(基础)

tar -xvf *.tar 

x:解打包
v:在压缩和解压缩(宏观,包含打包和解打包)过程中,显示正在处理的文件名
f:待处理(解打包)的文件名

说明:会保持原来的目录架构!

需求4:下载网上格式为*.tar.{gz,xz,bz2}的压缩文件,解压缩后进行程序的安装!

补充说明:要【解压缩并且解打包】文件后缀名与tar参数的关系

 压缩文件格式      参数
|:-----------:  |:--:|
|*.tar.gz       | -z |
|*tar.bz2       | -j |
|*.tar.xz       | -J |-->大写

  命令: tar -zxvf *.tar.gz

理解:各参数,最好以zxvf为原型来理解!--->知晓威风(名字霸气吧)

需求5查询压缩文件(打包后)或者打包后的文件名

(1)查看打包后的文件名:tar -tvf *.tar

(2)查看打包压缩后的文件:tar -ztvf *.tar.gz

原理:先解压缩,生成临时文件*.tar,然后用t查看打包后的文件名--->注意:tar的最终目的是{解}打包

v:在压缩和解压缩的过程中,将正在处理的文件名显示出来(包括详细的属性和权限)

测试:不加v与加v的区别!

需求6创建相应的压缩文件,供其他人下载

tar -czvf *.tar.gz(压缩打包后的文件名) 待处理的文件或者目录

需求7:备份(保留权限和属性)

(1)tar -jpcvf 打包压缩后的文件名(*.tar.bz2) 待处理的文件(宏观)

      eg:tar -jpcvf etc.tar.gz /etc

  p--->相对路径,保留备份数据原本的权限和属性,保留重要的配置文件(最好是root用户操作)

  问题:提示信息--->删除文件名之前的根目录(安全的考虑)---->被处理的文件包含在根目录的路径!

  现象:将备份数据在/tmp解开后,解压缩的文件名变成/tmp/etc/xxx

(2)tar -jpPcv 打包压缩后的文件名(*.tar.bz2) 待处理的文件(宏观)

     eg:tar -jpPcvf etc.tar.gz /etc
       
  P--->保留绝对路径(即允许备份数据中包含根目录)

 需求:常常为备份后需要还原原本的系统中,此时被备份的数据会覆盖原来路径下的数据!

 危害:旧版的备份数据覆盖了新版的备份数据!

补充:备份链接指向的源文件而不是链接本身(-h参数)

思考:用tar打包用gzip压缩,是否可以用tar解压缩------>当然不可以!

需求8:有时候我们只需要解压缩我们感兴趣的文件(关注点)

tar -zxvf 打包文件.tar.gz 待解开的文件名

重点:获取待解开的正确文件名

先查:tar -ztvf /root/etc.tar.gz | grep '关键字'

再解:目标

需求9:打包某目录,但不包括该目录下的某些文件(忽略)

tar -zcvf *.tar.gz(生成) --exclude=/root/etc* --exclude=/root/sm.tar.gz /etc /root

exclude--->不包含

注意:--exclude 与后面的目录对应,空格或者\的应用!

需求10:仅备份比某个时刻还要新的文件(提取合适的文件后备份)

好处:只备份新的数据(原来旧的已经备份了),降低备份的容量

tar -czvf 文件名(*.tar.gz) --newer-mtime="2018/07/17" /etc/*(源文件)

过程:没有备份的信息--->not dumped

命令详解

猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/86483842