尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

吃透Linux tar 命令!打包、备份、压缩一篇搞定

吃透Linux tar 命令!打包、备份、压缩一篇搞定 吃透Linux tar 命令打包、备份、压缩一篇搞定文件归档和备份一.tar 命令语法二.tar 包管理1.创建一个 tar 包2.查看 tar 包中文件3.提取 tar 包中文件4.tar 包中追加文件5.删除 tar 包中文件三.tar 包压缩管理文件归档和备份摘要本文详细介绍了 Linux 系统中使用tar命令进行文件归档和备份的方法。内容涵盖tar命令的基本语法、tar 包的创建、查看、提取、追加和删除等管理操作以及使用 gzip、bzip2 和 xz 三种压缩工具对 tar 包进行压缩的实践对比。通过丰富的命令行示例帮助读者掌握高效的文件归档与压缩技能。归档和压缩文件对于创建备份和通过网络传输数据非常有用。用于创建和使用备份存档的最古老和最常用的命令之一是 tar 命令。tar 可以将大量文件集合到一个文件存档中还可以使用 gzipbzip2或xz压缩来压缩存档。一.tar 命令语法二.tar 包管理1.创建一个 tar 包# 创建tar包确保用户有权限访问目标文件[lzserver ~22:03:18]$tar-cfetc.tar /etc/ tar: 从成员名中删除开头的“/” tar: /etc/crypttab无法 open: 权限不够 tar: /etc/grub.d无法 open: 权限不够 tar: /etc/pki/CA/private无法 open: 权限不够...# 没有权限读取的文件当然无法打包# root 用户可以打包所有文件[rootserver ~22:08:15]# tar -cf etc.tar /etctar: 从成员名中删除开头的“/”# 注意打包的时候会将文件的第一个字符/剔除掉。解压的时候默认解压到当前位置。# 再次打包如果存在相同的tar包不会提示是否覆盖[rootserver ~22:10:10]# tar -cf etc.tar /etctar: 从成员名中删除开头的“/”# 通过添加日期确保每天打包的文件名不一致rootserver ~22:10:26]# tar -cf etc-$(date %Y%m%d).tar /etctar: 从成员名中删除开头的“/”[rootserver ~22:11:54]# lsanaconda-ks.cfg etc-20260515.tar etc.tar[rootserver ~22:11:57]# ls -l etc*-rw-r--r--1root root302489605月1522:11 etc-20260515.tar -rw-r--r--1root root302489605月1522:10 etc.tar2.查看 tar 包中文件# 查看tar包内容[rootserver ~22:12:55]# tar -t -f etc-20260515.taretc/ etc/fstab etc/crypttab etc/mtab etc/resolv.conf etc/grub.d/ etc/grub.d/00_header etc/grub.d/01_users etc/grub.d/10_linux...# 配合grep过滤[rootserver ~22:15:26]# tar -t -f etc-20260515.tar |grep etc/hostetc/host.conf etc/hosts etc/hosts.allow etc/hosts.deny etc/hostname3.提取 tar 包中文件# 提取所有文件[rootserver ~22:16:44]# tar -xf etc-20260515.tar# 查看其中一个子目录[rootserver ~22:19:36]# tree -L 1 etc/yumetc/yum ├── fssnap.d ├── pluginconf.d ├── protected.d ├── vars └── version-groups.conf4directories,1file# 提取部分文件[rootserver ~22:19:39]# tar -t -f etc-20260515.tar |grep etc/hostetc/host.conf etc/hosts etc/hosts.allow etc/hosts.deny etc/hostname[rootserver ~14:32:18]# tar -xf etc-20260515.tar $(tar -t -f etc-20260515.tar |grep etc/host)[rootserver ~14:32:28]# tree etcetc ├── host.conf ├──hostname├── hosts ├── hosts.allow └── hosts.deny0directories,5files4.tar 包中追加文件[rootserver ~22:46:07]# mkdir /usr/share/doc/at-3.1.13[rootserver ~22:46:13]# touch /usr/share/doc/at-3.1.13/timespec[rootserver ~22:46:18]# tar -r -f etc-20260515.tar /usr/share/doc/at-3.1.13/timespectar: 从成员名中删除开头的“/”[rootserver ~22:46:45]# tar -tf etc-20260515.tar |grep timespecusr/share/doc/at-3.1.13/timespec5.删除 tar 包中文件[rootserver ~22:47:58]# tar --delete -f etc-20260515.tar usr/share/doc/at-3.1.13/timespec[rootserver ~22:48:59]# tar -tf etc-20260515.tar |grep timespec三.tar 包压缩管理tar 命令支持多种压缩方法gzip-z, --gzip 文件名通常以.tar.gz结尾。最快最老使用最广泛。bzip2-j, --bzip2 文件名通常以.tar.bz2结尾。压缩后比gzip小没gzip使用广泛。xz-J, --xz 文件名通常以.tar.xz结尾。比较新更好的压缩比。压缩的效果取决于被压缩的对象例如已经压缩的图片或者rpm包压缩效果不明显。# 确保相关压缩工具已经安装了[rootserver ~22:49:03]# yum install gzip bzip2 xz已加载插件fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com...# gzip压缩[rootserver ~22:51:34]# time tar -czf etc.tar.gz /etctar: 从成员名中删除开头的“/” real 0m2.279s user 0m1.771s sys 0m0.617s# bzip2 压缩[rootserver ~22:51:54]# time tar -cjf etc.tar.bz2 /etctar: 从成员名中删除开头的“/” real 0m5.186s user 0m4.972s sys 0m0.229s# xz 压缩[rootserver ~22:52:10]# time tar -cJf etc.tar.xz /etctar: 从成员名中删除开头的“/” real 0m22.537s user 0m18.678s sys 0m5.131s[rootserver ~22:52:48]# ls -lh etc.tar.*-rw-r--r--1root root8.8M5月1522:52 etc.tar.bz2 -rw-r--r--1root root 10M5月1522:51 etc.tar.gz -rw-r--r--1root root7.1M5月1522:52 etc.tar.xz# 查看压缩的 tar 包不需要指定压缩选项[rootserver ~22:54:20]# tar -tf etc.tar.gz
返回列表