查看原文
其他

文件打包与压缩(2)-打包命令tar

Cloud研习社 Cloud研习社 2023-06-06

前面我们讲到了压缩命令,本节我们来看看打包命令。再次提醒一下:打包相当于把文件放到一个背包里,压缩相当于把背包的体积挤压的更小。

tar 的选项与参数非常的多!我们只讲几个常用的选项


[root@www ~]# tar [-j|-z|-J] [cv] [-f 创建的打包后的文件名] filename... <==打包与压缩
[root@www ~]# tar [-j|-z|-J] [tv] [-f 现有的打包文件的文件名] <==查看tar包里有哪些文件
[root@www ~]# tar [-j|-z|-J] [xv] [-f 现有的打包文件的文件名] [-C 目录] <==解压缩
选项与参数:
-c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名
-t :查看打包文件的内容含有哪些文件
-x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开
      特别留意的是, -c, -t, -x 不可同时出现在一串命令列中。
-j :使用bzip2进行压缩、解压缩,此时文件名一般命名为 *.tar.bz2
-z :使用gzip进行压缩、解压缩,此时文件名一般命名为 *.tar.gz
-J :使用xz进行压缩、解压缩,此时文件名一般命名为*.tar.xz
-v :在压缩/解压缩的过程中,将正在处理的文件名显示出来
-f filename:-f 后面要立刻接要被处理的文件名!建议 -f 单独写一个选项
-C 目录 :这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

其他后续练习会使用到的选项介绍:
-p :保留备份数据的原本权限与属性,常用于备份(-c)重要的配置文件
-P :保留绝对路径,即允许备份数据中有根目录的路径形式
--exclude=FILE:在压缩的过程中,不要将 FILE 打包!


其实最简单的使用 tar 就只要记忆底下的方式即可【选项中的“j”可以换成“J”或“z”,此时也要该对应的文件后缀】:
  • 压 缩:tar -jcv -f filename.tar.bz2  要被压缩的文件或目录名称

  • 查 询:tar -jtv -f filename.tar.bz2

  • 解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录

下面我们通过实例来看看怎么应用:


# 把/etc/目录内的文件打包并通过gzip压缩
[root@studyclub ~]# tar -zcv -f baketc.tar.gz /etc
[root@studyclub ~]# ls
anaconda-ks.cfg baketc.tar.gz

# 查看打包压缩的文件里有哪些文件
[root@studyclub ~]# tar -ztv -f baketc.tar.gz

# 接下来我们把上面打包压缩的文件解包、解压后放到当前用户家目录的jason目录下
[root@studyclub ~]# tar -zxv -f baketc.tar.gz -C ~/jason
[root@studyclub ~]# ls jason/
configobj.py dir-test etc # 发现多了一个etc目录,没错,这就是我们解包、解压以后的效果

# 打包/usr/bin目录并使用bzip2进行压缩,但是不包括printf文件
[root@studyclub ~]# tar -jcv -f bakbin.tar.bz2 /usr/bin --exclude=printf


关于打包文件的称呼问题:
一般我们都称呼其为tarball,但是如果细究,还是有一些称呼上的差别的:
  • 如果仅仅是tar -cv -f file.tar,即只是做了打包,并没有压缩,我们就称file.tar为tarfile

  • 如果是tar -jcv -f file.tar.bz2,即有打包有压缩,我们就称file.tar.bz2为tarball

我们以后就统一称为tarball,不再做区分。
课后实践:
  • 请自行把bakbin.tar.bz2 文件解压到你的某个目录下(例如:~/jason目录),看看是不是printf没有被打包进来。

  • 请自行下载这个文件:https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.9.tar.xz,然后把它解压到你的某个目录下(例如:~/jason目录)

  • 请总结:tar命令的选项中大写字母C和小写字母c的作用的区别




新手应知:

    尝鲜Rocky Linux

《Linux基础及进阶》:

    031 - Linux账号管理(3)-用户组配置文件

    032 - Linux账号管理(4)-useradd/usermod/passwd

    033 - Linux账号管理(5)-userdel、id、groupadd、groupmod、groupdel

    034 - Linux账号管理(6)-身份确认及用户登录信息

    035 - Linux账号管理(7)-身份切换su、sudo

    036 - 文件打包与压缩(1)-常见的压缩命令


看完本文有收获?请分享给更多人


推荐关注「Cloud研习社」,带你从零开始掌握云计算技术!

微信号|bjdream-1


Cloud研习社 · 

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存