tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。对于RHEL7、CentOS7版本以后的系统,解压时可以不加压缩格式参数(如z或j),系统能自动进行分析并解压。

把要传输的文件先进行压缩再进行传输,能够很好的提高工作效率,方便分享。

语法格式:tar 参数 文件或目录

常用参数:

-A新增文件到以存在的备份文件
-B设置区块大小
-c建立新的备份文件
-C <目录>仅压缩指定目录里的内容或解压缩到指定目录
-d记录文件的差别
-x从归档文件中提取文件
-t列出备份文件的内容
-z通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
-Z通过compress指令处理备份文件
-f<备份文件>指定备份文件
-v显示指令执行过程
-r添加文件到已经压缩的文件
-u添加改变了和现有的文件到已经存在的压缩文件
-j通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
-v显示操作过程
-l文件系统边界设置
-k保留原有文件不覆盖
-m保留文件不被覆盖
-w确认压缩文件的正确性
-p保留原来的文件权限与属性
-P使用文件名的绝对路径,不移除文件名称前的“/”号
-N <日期格式>只将较指定日期更新的文件保存到备份文件里
-- -exclude=<范本样式>排除符合范本样式的文件
-- -remove-files归档/压缩之后删除源文件

参考实例

使用gzip压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz:

[root@linuxcool ~]# tar czvf backup1.tar.gz /etc
tar: Removing leading `/' from member names
/etc/
/etc/mtab
/etc/fstab
/etc/crypttab
/etc/resolv.conf
/etc/dnf/
………………省略部分输出信息………………

使用bzip2压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.bz2:

[root@linuxcool ~]# tar cjvf backup2.tar.bz2 /etc
tar: Removing leading `/' from member names
/etc/
/etc/mtab
/etc/fstab
/etc/crypttab
/etc/resolv.conf
/etc/dnf/
/etc/dnf/modules.d/
/etc/dnf/modules.d/container-tools.module
………………省略部分输出信息………………

将当前工作目录内所有以.cfg为后缀的文件打包,不进行压缩:

[root@linuxcool ~]# tar cvf backup3.tar *.cfg
anaconda-ks.cfg
initial-setup-ks.cfg

将当前工作目录内的所有以.cfg为后缀的文件打包,不进行压缩,并删除原始文件:

[root@linuxcool ~]# tar cvf backup4.tar *.cfg --remove-files
anaconda-ks.cfg
initial-setup-ks.cfg

解压某个压缩包到当前工作目录:

[root@linuxcool ~]# tar xvf backup4.tar 
anaconda-ks.cfg
initial-setup-ks.cfg

解压某个压缩包到/etc目录:

[root@linuxcool ~]# tar xvf backup4.tar -C /etc
anaconda-ks.cfg
initial-setup-ks.cfg

查看某个压缩包内文件信息(无需解压):

[root@linuxcool ~]# tar tvf backup4.tar 
-rw------- root/root      1256 2022-05-18 08:42 anaconda-ks.cfg
-rw-r--r-- root/root      1585 2025-05-18 08:43 initial-setup-ks.cfg
Author