我是靠谱客的博主 称心狗,最近开发中收集的这篇文章主要介绍linux中tar命令详解和使用示例、gzip打包成gz格式和使用示例、bzip2打包成bzip2格式和使用示例、linux中的zip命令详解和使用示例、linux中的rpm命令详解和使用示例环境准备tar命令zip和rpm详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 环境准备
  • tar命令
    • tar参数说明
    • tar的基础使用
      • 压缩文件
        • 说明
        • 压缩目录
        • 压缩文件
      • 查看压缩文件中的内容
      • 解压提取文件
        • 解压文件到当前路径
        • 解压目录文件到指定路径
    • tar的进阶使用
      • 说明【必看】
      • 压缩多个文件或目录
      • 打包成.gz格式并解压到指定路径【很重要】
      • 打包成bz2格式并解压到指定路径
      • 打包文件带上文件属性和解压【重要】
    • tar的使用示例
      • 范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar
      • 范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?
      • 范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下
      • 范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已
      • 范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!
      • 范例六:在 /home 当中,比 2005/06/01 新的文件才备份
      • 范例七:我要备份 /home, /etc ,但不要 /home/dmtsai
      • 范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!
  • zip和rpm详解

环境准备

  • 我这是一台centos7.6的全包gui系统
[root@master ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[root@master ~]# rpm -qa |  wc -l
1391
[root@master ~]# 
  • 我先创建一点多层次的文件夹和文件,后面打包好测试
[root@master ~]# mkdir /test/
[root@master ~]# cd /test/
[root@master test]# ls
[root@master test]# 
[root@master test]# 
[root@master test]# mkdir test{1..20}
[root@master test]# ls
test1   test110  test14  test17  test2   test4  test7
test10  test12   test15  test18  test20  test5  test8
test11  test13   test16  test19  test3   test6  test9
[root@master test]# 
[root@master test]# 
[root@master test]# mkdir test1/test{1..10}
[root@master test]# 
[root@master test]# touch test2/hero{100..110}
[root@master test]# ls test2/
hero100  hero102  hero104  hero106  hero108  hero110
hero101  hero103  hero105  hero107  hero109
[root@master test]# echo 123124124 >test3/hero
[root@master test]# cat test3/hero
123124124
[root@master test]#

tar命令

  • Linux 系统中,最常用的归档(打包)命令就是 tar,该命令可以将许多文件一起保存到一个单独的磁带或磁盘中进行归档。不仅如此,该命令还可以从归档文件中还原所需文件,也就是打包的反过程,称为解打包。

  • 使用 tar 命令归档的包通常称为 tar 包(tar 包文件都是以“.tar”结尾的)。

tar参数说明

  • 使用: tar [选项] 自定义名称 源文件或目录

  • 参数细节:

    • -c :建立一个压缩文件的参数指令(create 的意思);
    • -C:解压到指定路径 -C 后面跟解压目的目录
    • -x :解开一个压缩文件的参数指令!
    • -t :列出已有tar包归档文件的内容【和f结合使用】!
      特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!
      因为不可能同时压缩与解压缩。
    • -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?
      gzip压缩命令:tar -zcvf 归档路径 被打包路径. (gzip压缩,后缀一般是.tar.gz)
    • -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?
      bzip2压缩命令: tar -jcvf 归档路径 被打包路径. (bzip2压缩,后缀一般是.tar.bz2)
    • -v :压缩的过程中显示文件! 这个常用,但不建议用在背景执行过程!
    • -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!
         例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成『 tar -zcvPf tfile sfile』才对喔!
    • -p :使用原文件的原来属性(属性不会依据使用者而变)
    • -P :可以使用绝对路径来压缩!
    • -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
    • --exclude FILE:在压缩的过程中,不要将 FILE 打包!
  • 最常用的组合一般是参数记住这个配置就好了 czvf【打包文件,不能打包目录】和 xzvf【解压】

tar的基础使用

压缩文件

说明

  • tar -cvf 文件.tar 打包源文件<==仅打包,不压缩!

  • 说明,我为啥说这个是压缩,而不是打包呢

    • 1、我们平常如果解压啥软件的时候,你看到的结尾一般是*tar.gz结尾的,如:tar -zxvf pcre-8.35.tar.gz
    • 2、而tar呢,我们压缩后是以*.tar结尾的,所以这只是一个压缩文件而非打包文件
  • 我前面说过,tar的压缩无论是文件还是目录都可以
    命令:tar -cvf 自定义名称 源文件或目录

压缩目录

  • 命令:tar -cvf 自定义名称 目录
    注:不能压缩/
[root@master ~]# mkdir /tar-test/
[root@master ~]# cd /tar-test/
[root@master tar-test]# 
[root@master tar-test]# ls
[root@master tar-test]# 
[root@master tar-test]# tar -cvf test.tar /test
tar: Removing leading `/' from member names
/test/
/test/test1/
/test/test1/test1/
/test/test1/test2/
/test/test1/test3/
/test/test1/test4/
/test/test1/test5/
/test/test1/test6/
/test/test1/test7/
/test/test1/test8/
/test/test1/test9/
/test/test1/test10/
/test/test2/
/test/test2/hero100
/test/test2/hero101
/test/test2/hero102
/test/test2/hero103
/test/test2/hero104
/test/test2/hero105
/test/test2/hero106
/test/test2/hero107
/test/test2/hero108
/test/test2/hero109
/test/test2/hero110
/test/test3/
/test/test3/hero
/test/test4/
/test/test5/
/test/test6/
/test/test7/
/test/test8/
/test/test9/
/test/test10/
/test/test11/
/test/test12/
/test/test13/
/test/test14/
/test/test15/
/test/test16/
/test/test17/
/test/test18/
/test/test19/
/test/test20/
/test/test110/
[root@master tar-test]# 
[root@master tar-test]# ls
test.tar
[root@master tar-test]# 
[root@master tar-test]# tar -tf test.tar 
test/
test/test1/
test/test1/test1/
test/test1/test2/
test/test1/test3/
test/test1/test4/
test/test1/test5/
test/test1/test6/
test/test1/test7/
test/test1/test8/
test/test1/test9/
test/test1/test10/
test/test2/
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
test/test3/
test/test3/hero
test/test4/
test/test5/
test/test6/
test/test7/
test/test8/
test/test9/
test/test10/
test/test11/
test/test12/
test/test13/
test/test14/
test/test15/
test/test16/
test/test17/
test/test18/
test/test19/
test/test20/
test/test110/
[root@master tar-test]# 

压缩文件

  • 说明,压缩文件呢,最好在文件所在目录中执行,不要用下面绝对路径,这样压缩的,解压出来文件也在【和打包目录一样的了】
  • 命令:tar -cvf 自定义名称 源文件
    注:不能压缩/
[root@master tar-test]# tar -cvf file.tar /test/test3/hero 
tar: Removing leading `/' from member names
/test/test3/hero
[root@master tar-test]#
[root@master tar-test]# ls
file.tar  test.tar
[root@master tar-test]# 
[root@master tar-test]# tar -tf file.tar 
test/test3/hero
  • 也可以压缩某个目录下的所有文件
[root@master tar-test]# tar -cvf file_max.tar /test/test2/*
tar: Removing leading `/' from member names
/test/test2/hero100
/test/test2/hero101
/test/test2/hero102
/test/test2/hero103
/test/test2/hero104
/test/test2/hero105
/test/test2/hero106
/test/test2/hero107
/test/test2/hero108
/test/test2/hero109
/test/test2/hero110
[root@master tar-test]# ls
file_max.tar  file.tar  test.tar
[root@master tar-test]# tar -tf file_max.tar 
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
[root@master tar-test]# 

查看压缩文件中的内容

命令:tar -tf tar文件

[root@master tar-test]# ls
file_max.tar  file.tar  test.tar
[root@master tar-test]# tar -tf file_max.tar 
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
[root@master tar-test]# 

解压提取文件

  • 命令:tar -xvf tar文件

解压文件到当前路径

  • 这个呢,一般都是只是文件,并非目录哈,所以呢,这个就是 在哪解压,解压的内容就在哪里
    因为我前面打包单文件是用了绝对路径,所以这解压出来也会带路径【所以我前面说,打包单文件最好在文件所处路径打包,不要带绝对路径】
[root@master tar-test]# mkdir file
[root@master tar-test]# mv file_max.tar file.tar  file
[root@master tar-test]# ls
file  test.tar
[root@master tar-test]# cd file/
[root@master file]# ls
file_max.tar  file.tar
[root@master file]# tar -xvf file.tar 
test/test3/hero
[root@master file]# ls
file_max.tar  file.tar  test
[root@master file]# 
[root@master file]# ls test/test3/hero 
test/test3/hero
[root@master file]# 

解压目录文件到指定路径

  • 解压目录,如果是以/开头的,那么我们解压就必须解压到指定路径/
    如,解压打包好的`/etc/目录这种,我下面以/test为例,因为我打包的是/路径,所以我就需要解压到/下面
    说明:我之前的/test目录有16k,但我重新解压后只有4k了,我不知道为啥,验证了,里面的文件和内容都没缺失。
[root@master file]# cd ..
[root@master tar-test]# ls
file  test.tar
[root@master tar-test]# ls /test/|wc -l
21
[root@master tar-test]# du -sh /test/
16K     /test/
[root@master tar-test]# rm -rf /test
[root@master tar-test]# 
[root@master tar-test]# tar -xvf test.tar -C /
test/
test/test1/
test/test1/test1/
test/test1/test2/
test/test1/test3/
test/test1/test4/
test/test1/test5/
test/test1/test6/
test/test1/test7/
test/test1/test8/
test/test1/test9/
test/test1/test10/
test/test2/
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
test/test3/
test/test3/hero
test/test4/
test/test5/
test/test6/
test/test7/
test/test8/
test/test9/
test/test10/
test/test11/
test/test12/
test/test13/
test/test14/
test/test15/
test/test16/
test/test17/
test/test18/
test/test19/
test/test20/
test/test110/
[root@master tar-test]# ls /test/ | wc -l
21
[root@master tar-test]# du -sh *
36K     file
32K     test.tar
[root@master tar-test]# du -sh /test/
4.0K    /test/
[root@master tar-test]# cd /test/
[root@master test]# ls
test1   test110  test14  test17  test2   test4  test7
test10  test12   test15  test18  test20  test5  test8
test11  test13   test16  test19  test3   test6  test9
[root@master test]# cd test2
test2/  test20/ 
[root@master test]# cd test2
test2/  test20/ 
[root@master test]# cd test2
[root@master test2]# ls
hero100  hero102  hero104  hero106  hero108  hero110
hero101  hero103  hero105  hero107  hero109
[root@master test2]# cd /test/test3/
[root@master test3]# cat hero 
123124124
[root@master test3]# 

tar的进阶使用

说明【必看】

  • 我上面只是说了tar的基本使用

  • 但,把文件直接压缩成.tar.gz.tar.bz2格式,才是 Linux 中最常用的压缩方式,这是大家一定要掌握的压缩和解压缩方法。

  • tar 命令最初被用来在磁带上创建备份,现在可以在任何设备上创建备份。利用 tar 命令可以把一大堆的文件和目录打包成一个文件,这对于备份文件或是将几个文件组合成为一个文件进行网络传输是非常有用的。

压缩多个文件或目录

  • tar -cvf /tmp/etc.tar /etc<==仅打包,不压缩!
  • tar命令也可以打包多个文件或目录,只要用空格分开即可。
[root@master test2]# tar -cvf /tar-test/duo.tar hero101 hero102 
hero101
hero102
[root@master test2]# tar -tf /tar-test/duo.tar 
hero101
hero102
[root@master test2]# 
  • 打包目录和上面一样。

打包成.gz格式并解压到指定路径【很重要】

  • tar -zcvf 文件.tar.gz 打包源文件 <==打包后,以 gzip 压缩
  • 其实我们平常所见到的安装包都是这种格式的,所以对于打包,这个必须要掌握哈
  • 我先给/test文件创建大一点的文件
[root@master tar-test]# cd /test/
[root@master test]#  dd if=/dev/zero of=/test/date.test bs=1M count=30
30+0 records in
30+0 records out
31457280 bytes (31 MB) copied, 0.0251964 s, 1.2 GB/s
[root@master test]# du -sh /test
31M     /test
[root@master test]# 
  • 打包/test目录
    /不会被打包的哈
[root@master test]# tar -zcvf /tar-test/test.tar.gz /test
tar: Removing leading `/' from member names
/test/
/test/test1/
/test/test1/test1/
/test/test1/test2/
/test/test1/test3/
/test/test1/test4/
/test/test1/test5/
/test/test1/test6/
/test/test1/test7/
/test/test1/test8/
/test/test1/test9/
/test/test1/test10/
/test/test2/
/test/test2/hero100
/test/test2/hero101
/test/test2/hero102
/test/test2/hero103
/test/test2/hero104
/test/test2/hero105
/test/test2/hero106
/test/test2/hero107
/test/test2/hero108
/test/test2/hero109
/test/test2/hero110
/test/test3/
/test/test3/hero
/test/test4/
/test/test5/
/test/test6/
/test/test7/
/test/test8/
/test/test9/
/test/test10/
/test/test11/
/test/test12/
/test/test13/
/test/test14/
/test/test15/
/test/test16/
/test/test17/
/test/test18/
/test/test19/
/test/test20/
/test/test110/
/test/date.test
[root@master test]# 
  • 解压
    因为我这个是在/下的,所以我也需要指定解压到/下
[root@master test]# cd /tar-test/
[root@master tar-test]# ls
duo.tar  etc.tar.gz  file  test.tar  test.tar.gz
[root@master tar-test]# du -sh test.tar.gz 
32K     test.tar.gz
[root@master tar-test]# rm -rf /test/
[root@master tar-test]# tar -zxvf test.tar.gz -C /
test/
test/test1/
test/test1/test1/
test/test1/test2/
test/test1/test3/
test/test1/test4/
test/test1/test5/
test/test1/test6/
test/test1/test7/
test/test1/test8/
test/test1/test9/
test/test1/test10/
test/test2/
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
test/test3/
test/test3/hero
test/test4/
test/test5/
test/test6/
test/test7/
test/test8/
test/test9/
test/test10/
test/test11/
test/test12/
test/test13/
test/test14/
test/test15/
test/test16/
test/test17/
test/test18/
test/test19/
test/test20/
test/test110/
test/date.test
[root@master tar-test]# du -sh /test/
31M     /test/
[root@master tar-test]# 

打包成bz2格式并解压到指定路径

  • tar -jcvf 文件.tar.bz2 打包源文件<==打包后,以 bzip2 压缩
  • 打包/test
    /不会被打包的哈
[root@master tar-test]# tar -jcvf /tar-test/test.tar.bz2 /test/
tar: Removing leading `/' from member names
/test/
/test/test1/
/test/test1/test1/
/test/test1/test2/
/test/test1/test3/
/test/test1/test4/
/test/test1/test5/
/test/test1/test6/
/test/test1/test7/
/test/test1/test8/
/test/test1/test9/
/test/test1/test10/
/test/test2/
/test/test2/hero100
/test/test2/hero101
/test/test2/hero102
/test/test2/hero103
/test/test2/hero104
/test/test2/hero105
/test/test2/hero106
/test/test2/hero107
/test/test2/hero108
/test/test2/hero109
/test/test2/hero110
/test/test3/
/test/test3/hero
/test/test4/
/test/test5/
/test/test6/
/test/test7/
/test/test8/
/test/test9/
/test/test10/
/test/test11/
/test/test12/
/test/test13/
/test/test14/
/test/test15/
/test/test16/
/test/test17/
/test/test18/
/test/test19/
/test/test20/
/test/test110/
/test/date.test
[root@master tar-test]# ls | grep bz2
test.tar.bz2
[root@master tar-test]# 
  • 解压
    因为我这个是在/下的,所以我也需要指定解压到/下
[root@master tar-test]# rm -rf /test/
[root@master tar-test]# tar -jxvf test.tar.bz2 -C /
test/
test/test1/
test/test1/test1/
test/test1/test2/
test/test1/test3/
test/test1/test4/
test/test1/test5/
test/test1/test6/
test/test1/test7/
test/test1/test8/
test/test1/test9/
test/test1/test10/
test/test2/
test/test2/hero100
test/test2/hero101
test/test2/hero102
test/test2/hero103
test/test2/hero104
test/test2/hero105
test/test2/hero106
test/test2/hero107
test/test2/hero108
test/test2/hero109
test/test2/hero110
test/test3/
test/test3/hero
test/test4/
test/test5/
test/test6/
test/test7/
test/test8/
test/test9/
test/test10/
test/test11/
test/test12/
test/test13/
test/test14/
test/test15/
test/test16/
test/test17/
test/test18/
test/test19/
test/test20/
test/test110/
test/date.test
[root@master tar-test]# du -sh /test
31M     /test
[root@master tar-test]#

打包文件带上文件属性和解压【重要】

  • 这种场景呢,备份系统文件或者打包可直接运行的程序,这个非常重要,如果不带上属性,可能备份或打包的文件不能正常运行,因为权限可能会出错。

  • 如:将 /etc/ 内的所有文件备份下来,并且保存其权限!
    tar -zxvpf /tar-test/etc.tar.gz /etc 【这个p很重要啊,是保留原文本文件属性用的】

[root@master tar-test]# tar -zcvpf /tar-test/etc.tar.gz /etc
。。一堆输出
  • 解压,也需要带上参数p啊
[root@master tar-test]# tar -zxvpf /tar-test/etc.tar.gz /etc
。。一堆输出

tar的使用示例

  • 下面示例来源于网络,我并没有操作过哈。

范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

[root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

[root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

[root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

# 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

# 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

# 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

# 上述指令在执行的时候,会显示一个警告讯息:

# 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。 

范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

[root@linux ~]# tar -ztvf /tmp/etc.tar.gz

# 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

# 就得要加上 z 这个参数了!这很重要的!

范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

[root@linux ~]# cd /usr/local/src

[root@linux src]# tar -zxvf /tmp/etc.tar.gz

# 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,

# 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

# 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc

# 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

# 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

# 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

[root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

# 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

范例六:在 /home 当中,比 2005/06/01 新的文件才备份

[root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

[root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

[root@linux ~]# cd /tmp

[root@linux tmp]# tar -cvf - /etc | tar -xvf -

# 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

# 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

# 这分别代表 standard output, standard input 与管线命令啦!

zip和rpm详解

看这篇博客:
linux中的zip命令详解和使用示例、linux中的unzip命令详解和使用使用实例、linux中的rpm命令详解和使用示例、linux中rpm管理包详细说明和使用示例、tar命令详解和使用示例

最后

以上就是称心狗为你收集整理的linux中tar命令详解和使用示例、gzip打包成gz格式和使用示例、bzip2打包成bzip2格式和使用示例、linux中的zip命令详解和使用示例、linux中的rpm命令详解和使用示例环境准备tar命令zip和rpm详解的全部内容,希望文章能够帮你解决linux中tar命令详解和使用示例、gzip打包成gz格式和使用示例、bzip2打包成bzip2格式和使用示例、linux中的zip命令详解和使用示例、linux中的rpm命令详解和使用示例环境准备tar命令zip和rpm详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部