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=路径/文件 路径
注:此处的路径前后需要保持保持一致,统一使用绝对路径或者相对路径
-
创建(非压缩的)打包文件,将指定的一个或多个文件或目录备份生成为一个指定的包文件
tar cvf/cfv/-cvf 文件名.tar 要打包的目录或文件名列表……
-
列出包文件中的文件列表
tar t[v]f 包文件名
-
创建带压缩的包文件,为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式
tar czf/-czf 文件名.tar.gz 要打包压缩的目录或文件名…… tar cjf/-cjf 文件名.tar.bz2 要打包压缩的目录或文件名…… tar cJf/-cJf 文件名.tar.xz 要打包压缩的目录或文件名……
-
提取包文件到指定目录
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