400-680-8581
欢迎访问:路由通
中国IT知识门户
位置:路由通 > 资讯中心 > 零散代码 > 文章详情

linux命令tar的用法(Linux tar用法)

作者:路由通
|
55人看过
发布时间:2025-05-03 14:05:16
标签:
Linux命令tar作为文件归档与压缩的核心工具,其功能涵盖文件打包、压缩、解压及权限维护等多个维度。该命令通过组合不同参数,可适配多种场景需求,例如创建带压缩的归档文件、排除特定目录、结合管道实现流式处理等。相较于其他压缩工具(如gzip
linux命令tar的用法(Linux tar用法)

Linux命令tar作为文件归档与压缩的核心工具,其功能涵盖文件打包、压缩、解压及权限维护等多个维度。该命令通过组合不同参数,可适配多种场景需求,例如创建带压缩的归档文件、排除特定目录、结合管道实现流式处理等。相较于其他压缩工具(如gzip、zip),tar的优势在于对文件权限、软链接、时间戳等元数据的完整保留,以及跨平台的高兼容性。其命令结构灵活,既可通过单一指令完成复杂操作,也可嵌入脚本实现自动化任务。然而,不同压缩算法(如gzip、bzip2、xz)的选择、参数组合的差异(如-v与--verbose),以及平台间的行为不一致(如GNU tar与BSD tar),均可能影响执行结果。因此,深入理解tar的参数逻辑与底层机制,是充分发挥其功能的关键。

l	inux命令tar的用法


基础语法与核心参数

tar命令的基本格式为:tar [选项] [文件或目录]。核心参数分为四类:动作参数(如-c创建、-x解压)、过滤参数(如-f指定文件名)、压缩参数(如-z启用gzip)和辅助参数(如-v显示过程)。以下是关键参数的说明表:

参数类别常用参数作用描述
动作参数-c(创建)
-x(解压)
-t(列出)
-r(追加)
定义归档文件的操作类型
过滤参数-f [文件名]
-C [目录]
指定输入/输出文件或切换工作目录
压缩参数-z(gzip)
-j(bzip2)
-J(xz)
--use-compress-program=[程序]
调用外部压缩工具或自定义算法
辅助参数-v(显示过程)
-k(保留原文件)
--checkpoint=[间隔]
控制执行细节与反馈信息

压缩算法与性能对比

tar支持多种压缩算法,不同算法在压缩效率、压缩比和速度上差异显著。以下是三种主流算法的对比:

压缩算法参数压缩比速度兼容性
gzip-z中等(1:2~1:3)广泛支持
bzip2-j高(1:4~1:5)较慢需安装bsdtar
xz-J最高(1:6+)最慢现代系统支持

实际场景中,若需平衡速度与压缩比,可优先选择-z;若存储空间紧张且对速度不敏感,则推荐-J。此外,通过--use-compress-program可指定自定义压缩工具(如pigz多线程gzip)。


文件排除与包含策略

通过--exclude参数可过滤不需要归档的文件,支持通配符与正则表达式。以下为两种排除方式的对比:

方式语法示例适用场景
直接排除--exclude=.log简单模式匹配(如排除所有.log文件)
文件列表--exclude-from=exclude.txt批量排除(每行一个规则,如^node_modules/

若需仅包含特定文件,可结合-g参数生成包含列表文件,或通过find | tar管道实现动态筛选。例如:find ./src -name '.js' | tar -czf js-files.tar.gz --from-commands


权限与属性维护

tar默认会保留文件的所有权、权限、时间戳等元数据,但在某些场景下需手动调整:

参数作用注意事项
--owner=[用户]重置所有者需有权限,否则可能报错
--group=[组]重置所属组同上
--preserve-permissions保留权限(默认行为)部分旧版系统需显式声明
-p保留完整属性(等效于-P)非POSIX标准参数,依赖实现

在跨系统迁移时,若目标系统用户与源系统不一致,可先用--owner=root --group=root统一权限,再通过chown -R修复。此外,--same-owner可强制使用当前用户身份,避免权限问题。


流式处理与管道集成

tar可与其他命令结合实现流式操作,例如:

  • tar -cf - dir | ssh userhost 'tar -xf -':通过管道远程传输文件。
  • tar -tzf archive.tar.gz | wc -l:统计归档内文件数量。
  • cat list.txt | xargs tar -rvf archive.tar:按列表追加文件。

需注意,流式操作中-f -表示使用标准输入/输出,此时压缩参数需谨慎使用(如-z会中断流水线)。建议优先使用--to-stdout--from-commands明确意图。


增量备份与更新归档

通过-r-u参数可实现增量追加或仅更新修改过的文件:

参数行为适用场景
-r追加新文件(不检查是否存在)日志备份,保留历史版本
-u仅更新原归档中已存在且内容变化的文件数据库备份,减少冗余

示例:tar -uvf backup.tar /data/db/仅更新数据库目录下已修改的文件,避免重复存储未变更数据。结合--listed-incremental参数,还可生成带校验和的增量备份(如-g snap.sig)。


跨平台兼容性处理

不同操作系统的tar实现存在差异,需特别注意:

特性GNU tarBSD tar(macOS等)POSIX标准
长选项支持是(如--exclude)否(需使用短选项)部分支持
UTF-8编码自动处理依赖环境设置未定义
增量备份签名支持.sig文件部分支持未规定

为兼容BSD tar,应避免使用--exclude,改用-X加载排除文件;同时减少对GNU扩展参数(如--overwrite)的依赖。可通过stat --format=%Y file.tar检查归档格式是否被目标系统识别。


自动化脚本与错误处理

在脚本中调用tar时,需处理以下问题:

  • 错误捕获:使用&&链式执行或set -e确保失败时终止脚本。
  • 变量传递:通过$$(date +%F)动态生成归档名(如backup-$(date +%F).tar.gz)。
  • 日志记录:结合-v参数将过程输出重定向到日志文件(如>> backup.log)。

示例脚本:

!/bin/bash
mkdir -p /backup/$(date +%Y%m%d)
tar -czf /backup/$(date +%Y%m%d)/webapp.tar.gz
--exclude='.tmp' --exclude='cache/' /var/www//
if [ $? -eq 0 ]; then
rm -f /backup/old-.tar.gz 清理旧备份
fi

通过以上多维度分析可见,tar命令虽看似简单,但其参数组合与场景适配的灵活性极高。从基础的文件打包到复杂的自动化备份,从本地操作到跨网络传输,tar均可通过合理配置满足需求。实际使用中,建议根据压缩效率、兼容性要求、元数据处理等具体条件,选择对应的参数与流程,并充分测试不同平台的行为一致性。

相关文章
路由器怎么和台式机连接(路由器连台式机)
路由器与台式机的连接是构建稳定网络环境的核心环节,其实现方式直接影响数据传输效率、网络稳定性及安全性。根据连接介质可分为有线(以太网)和无线(Wi-Fi)两类,前者通过物理线缆直连,后者依赖无线电波传输。有线连接凭借低延迟、高带宽和抗干扰性
2025-05-03 14:05:13
232人看过
微信怎么发软件给人家(微信传软件方法)
在移动互联网时代,微信作为国民级社交工具,承担了海量的文件传输需求。然而软件分发涉及文件体积、格式兼容性、平台差异等多重技术挑战,尤其在跨操作系统(Android/iOS/Windows/macOS)、不同设备类型(手机/电脑)以及微信版本
2025-05-03 14:05:09
63人看过
腾达路由器手机设置方法(腾达路由手机设置)
腾达路由器手机设置方法综合评述:随着移动互联网技术的普及,通过手机端完成路由器配置已成为主流操作方式。腾达路由器凭借其专属Tenda WiFi应用程序,实现了跨平台、可视化的智能配置流程。该设置方法突破传统PC端操作的地域限制,用户可随时随
2025-05-03 14:05:09
290人看过
三角函数的特殊值定义(三角特值)
三角函数的特殊值定义是数学领域中的核心基础内容,其本质是将特定角度与数值计算建立直接关联。这些特殊角度(如0°、30°、45°、60°、90°等)的三角函数值不仅具有严格的数学推导逻辑,更在几何图形、单位圆、特殊三角形等多元场景中形成自洽体
2025-05-03 14:05:03
143人看过
抖音人气卡怎么用(抖音人气卡用法)
抖音人气卡是平台为创作者设计的一套流量激励体系,通过将公域流量转化为私域关注,帮助用户快速提升账号曝光度与粉丝活跃度。其核心逻辑在于“流量兑换”——用户通过参与平台活动、完成创作任务或消耗虚拟资源(如DOU+)获取人气值,再将人气值转化为直
2025-05-03 14:05:06
219人看过
微信联系人删除了怎么找回(微信误删好友恢复)
微信作为国民级社交应用,其联系人数据承载着重要的社交关系链。当用户误删微信联系人时,往往会面临沟通中断、商业合作受阻等实际问题。根据微信产品特性,联系人删除分为单向删除(自己删除对方)和双向删除(被对方拉黑或互删)两种情况,前者仍可通过技术
2025-05-03 14:05:05
361人看过