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