迅速学tar命令对文件的打包压缩与解压缩

tar 命令

格式: tar [选项] [args]……

选项:任选其一

选项 功能
-c 创建.tar格式的包文件
-x 释放.tar格式的包文件
-t 查看包中的文件列表

必选项:

选项 功能
-f 用于指定打包文件名。
当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名
当与-x选项一起使用时,则释放该选项指定的tar包文件

辅助选项:

选项 功能
-v 表示在命令执行时显示详细的提示信息
-p 打包时保留文件及目录的权限
-z 调用gzip程序,以gzip格式压缩或解压缩文件(.tar.gz)
-j 调用bzip2程序,以bzip2格式压缩或解压缩文件(.tar.bz2)
-J 使用xz压缩或解压缩文件(.tar.xz),xz的压缩率通常比bzip2更高
-C(大写字母C) 和-x选项一起使用,表示释放包时指定释放的目标路径

额外的选项:

#打包时排除某个文件 
tar cf 文件名.tar --exclude=路径/文件 路径 
注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径 
  1. 创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件

    tar cvf/cfv/-cvf 文件名.tar 要打包的目录或文件名列表……
    
  2. 列出包文件中的文件列表

    tar t[v]f 包文件名
    
  3. 创建带压缩的包文件,为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式

    tar czf/-czf 文件名.tar.gz 要打包压缩的目录或文件名…… 
    tar cjf/-cjf 文件名.tar.bz2 要打包压缩的目录或文件名…… 
    tar cJf/-cJf 文件名.tar.xz 要打包压缩的目录或文件名…… 
    
  4. 提取包文件到指定目录

    tar xf/-xf/-xzf 文件名.tar.gz [-C 目标路径] 
    tar xf/-xf/-xjf 文件名.tar.bz2 [-C 目标路径] 
    tar xf/-xf/-xJf 文件名.tar.xz [-C 目标路径]
    

举例:

1、使用gzip方式对文件进行压缩,并指定压缩名为 tar_gzip.tar.gz

[root@YXP ~]# touch file{1..5}
[root@YXP ~]# ls
'~'   anaconda-ks.cfg   file1   file2   file3   file4   file5   initial-setup-ks.cfg
[root@YXP ~]# tar -czvf tar_gzip.tar.gz file1
file1
[root@YXP ~]# ls
'~'                file1   file3   file5                  tar_gzip.tar.gz
 anaconda-ks.cfg   file2   file4   initial-setup-ks.cfg

2、使用bzip2方式对文件夹进行压缩,并指定压缩名为 tar_bzip2.tar.bz2

[root@YXP ~]# tar -cjvf tar_xz.tar.bz2 file2
file2
[root@YXP ~]# ls
'~'                file1   file3   file5                  tar_gzip.tar.gz
 anaconda-ks.cfg   file2   file4   initial-setup-ks.cfg   tar_xz.tar.bz2

3、使用xz方式对文件进行压缩,并指定压缩名为 tar_xz.tar.xz

[root@YXP ~]# tar -cJvf tar_xz.tar.xz file3
file3
[root@YXP ~]# ls
'~'                file2   file5                  tar_xz.tar.bz2
 anaconda-ks.cfg   file3   initial-setup-ks.cfg   tar_xz.tar.xz
 file1             file4   tar_gzip.tar.gz

4、新建文件file1.txt,file2.txt,file3.txt

touch file{1..3}.text
[root@YXP ~]# ls
'~'                file1.text   file3        file5                  tar_xz.tar.bz2
 anaconda-ks.cfg   file2        file3.text   initial-setup-ks.cfg   tar_xz.tar.xz
 file1             file2.text   file4        tar_gzip.tar.gz

5、对文件file1.txt和file2.txt,进行压缩(使用gzip方式),排除file3.txt(即不对file3进行压缩)并指定压缩名为tar_file.tar.gz

[root@YXP ~]# tar -cvzf tar_file.tar.gz --exclude=file3.text file*.text 
file1.text
file2.text

6、新建文件file4.txt,将file4.txt添加到tar_file.tar.gz中(tar命令无法对压缩文件进行更新(如果文件未经过压缩,则可以通过tar -rvf命令实现文件添加)。对于想要通过tar命令更新压缩文件,则只能通过解压压缩文件并更新后重新压缩这一方式实现。)

[root@YXP ~]# gunzip tar_file.tar.gz 
[root@YXP ~]# ls
'~'                file1.text   file3        file5                  tar_gzip.tar.gz
 anaconda-ks.cfg   file2        file3.text   initial-setup-ks.cfg   tar_xz.tar.bz2
 file1             file2.text   file4        tar_file.tar           tar_xz.tar.xz
[root@YXP ~]# tar -rvf tar_file.tar file4 
file4
[root@YXP ~]# gzip tar_file.tar 
[root@YXP ~]# ls
'~'                file1.text   file3        file5                  tar_gzip.tar.gz
 anaconda-ks.cfg   file2        file3.text   initial-setup-ks.cfg   tar_xz.tar.bz2
 file1             file2.text   file4        tar_file.tar.gz        tar_xz.tar.xz

7、 查看压缩包tar_file.tar.gz有哪些文件及目录(不解压,只查看)

[root@YXP ~]# tar -tvf tar_file.tar.gz 
-rw-r--r-- root/root         0 2022-07-18 14:16 file1.text
-rw-r--r-- root/root         0 2022-07-18 14:16 file2.text
-rw-r--r-- root/root         0 2022-07-18 14:03 file4

8、 解压tar_gzip.tar.gz到指定目录tar_test(没有这个目录就创建)

[root@YXP ~]# mkdir tar_test
[root@YXP ~]# tar -xzvf tar_file.tar.gz -C tar_test/
file1.text
file2.text
file4
[root@YXP ~]# ls -l tar_test
total 0
-rw-r--r--. 1 root root 0 Jul 18 14:16 file1.text
-rw-r--r--. 1 root root 0 Jul 18 14:16 file2.text
-rw-r--r--. 1 root root 0 Jul 18 14:03 file4

9、 解压tar_xz.tar.xz

[root@YXP ~]# tar -xJvf tar_xz.tar.xz 
file3

你可能感兴趣的:(linux,linux,服务器,运维)