当前位置: 首页 > news >正文

Linux文件归档工具tar

tar 命令是 Linux/Unix 系统中最常用的文件归档工具,用于将多个文件或目录打包成一个单独的归档文件(通常称为“tar 包”),方便传输、备份或存储。它本身不具备压缩功能,但可以与 gzip、bzip2、xz 等压缩工具结合,实现“打包+压缩”的效果。

一、tar 命令的基本语法

tar 命令的核心语法结构如下:

tar [选项] [归档文件名] [源文件/目录...]
  • 选项:控制 tar 的行为(如创建、提取、查看归档等);
  • 归档文件名:指定生成的 tar 包名称(通常以 .tar 为后缀,若结合压缩则加相应后缀,如 .tar.gz);
  • 源文件/目录:需要打包的文件或目录(提取时无需指定,只需指定归档文件)。

二、核心选项(必知必会)

tar 的选项非常多,以下是最常用的核心选项(可组合使用):

选项英文含义功能说明
-ccreate创建新的归档文件(打包)。
-xextract从归档文件中提取文件/目录。
-tlist查看归档文件中的内容(不解压)。
-ffile指定归档文件的名称(必须放在选项的最后,后面直接跟文件名)。
-vverbose显示详细操作过程(列出处理的文件/目录,推荐加上,方便确认)。
-zgzip结合 gzip 压缩/解压(归档文件通常以 .tar.gz.tgz 为后缀)。
-jbzip2结合 bzip2 压缩/解压(归档文件通常以 .tar.bz2 为后缀)。
-Jxz结合 xz 压缩/解压(归档文件通常以 .tar.xz 为后缀,压缩率更高,速度较慢)。
-Cdirectory提取文件时指定目标目录(默认解压到当前目录)。
-Pabsolute-names保留文件的绝对路径(默认会去掉路径开头的 /,避免覆盖系统文件)。
-ppreserve-permissions提取文件时保留原文件的权限(默认可能会根据当前用户权限调整)。
--excludeexclude打包时排除指定的文件/目录(支持通配符 *)。

三、常用场景与示例

1. 仅打包(不压缩,生成 .tar 文件)
  • 创建 tar 包(将 file1.txtdir1 打包为 archive.tar):

    tar -cvf archive.tar file1.txt dir1/
    
    • 选项解析:-c(创建)、-v(详细)、-f(指定文件 archive.tar)。
    • 执行后会显示打包的文件列表(因 -v 选项)。
  • 查看 tar 包内容(不解压,确认里面有哪些文件):

    tar -tvf archive.tar
    
    • 输出会显示文件权限、大小、修改时间等信息。
  • 提取 tar 包(解压到当前目录):

    tar -xvf archive.tar
    
  • 提取到指定目录(如解压到 ./target_dir,需确保目录存在):

    tar -xvf archive.tar -C ./target_dir
    
2. 打包并压缩(结合不同压缩工具)

tar 常与压缩工具结合,生成更小的归档文件,常见组合如下:

压缩方式选项归档文件后缀特点(压缩率:xz > bzip2 > gzip;速度:gzip > bzip2 > xz)
gzip-z.tar.gz.tgz最常用,平衡压缩率和速度
bzip2-j.tar.bz2压缩率略高于 gzip,速度稍慢
xz-J.tar.xz压缩率最高,速度最慢(适合归档大文件)

示例:

  • 创建 gzip 压缩包(将 docs/ 打包为 docs.tar.gz):

    tar -czvf docs.tar.gz docs/
    
  • 解压 gzip 压缩包

    tar -xzvf docs.tar.gz  # 解压到当前目录
    tar -xzvf docs.tar.gz -C ./backup  # 解压到 ./backup 目录
    
  • 创建 xz 压缩包(压缩率更高,适合大文件):

    tar -cJvf large_files.tar.xz video.mp4 data/
    
  • 查看 bzip2 压缩包内容

    tar -tjvf logs.tar.bz2
    
3. 高级用法
  • 打包时排除指定文件/目录
    例如,打包 project/ 但排除临时文件 project/tmp/.log 后缀文件:

    tar -czvf project.tar.gz --exclude=project/tmp --exclude=*.log project/
    
  • 保留绝对路径打包/解压
    默认情况下,tar 会去掉文件路径开头的 /(避免解压时覆盖系统文件)。若需保留绝对路径,需加 -P 选项:

    # 打包绝对路径文件(如 /etc/nginx/)
    tar -czvPf nginx_conf.tar.gz /etc/nginx/# 解压时保留绝对路径(会直接解压到 /etc/nginx/,谨慎使用!)
    tar -xzvPf nginx_conf.tar.gz
    
  • 仅提取 tar 包中的特定文件
    例如,从 archive.tar 中只提取 file1.txtdir1/subfile.txt

    tar -xvf archive.tar file1.txt dir1/subfile.txt
    
  • 增量备份(仅打包修改过的文件):
    结合 --newer 选项,只打包指定时间后修改的文件(如 2025-08-01 之后):

    tar -czvf backup_20250801.tar.gz --newer "2025-08-01" /home/user/
    

四、常见错误与注意事项

  1. 忘记 -f 选项或位置错误
    -f 必须放在选项最后,且后面直接跟文件名。例如,tar -cvfz archive.tar.gz dir/ 是错误的(z 后面不是文件名),正确应为 tar -czvf archive.tar.gz dir/

  2. 压缩选项与文件后缀不匹配
    例如,用 -z 解压 .tar.bz2 文件会失败,需对应使用 -j 选项。

  3. 权限问题
    提取系统目录的 tar 包时(如 /etc),需用 sudo 权限,否则可能因权限不足导致部分文件无法提取。

  4. 大型归档文件处理
    对于几个 GB 以上的 tar 包,建议加 -v 选项观察进度,避免误以为命令卡住。

五、总结:常用命令速记

功能命令示例
创建 gzip 压缩包tar -czvf 包名.tar.gz 源文件/目录
解压 gzip 压缩包tar -xzvf 包名.tar.gz
创建 bzip2 压缩包tar -cjvf 包名.tar.bz2 源文件/目录
解压 bzip2 压缩包tar -xjvf 包名.tar.bz2
查看压缩包内容tar -tzf 包名.tar.gz(gzip 格式)
解压到指定目录tar -xzvf 包名.tar.gz -C 目标目录
打包时排除文件tar -czvf 包名.tar.gz --exclude=排除项 源

掌握这些用法,基本可以应对 Linux 系统中绝大多数文件归档和备份场景。

http://www.dtcms.com/a/349898.html

相关文章:

  • 基于SpringBoot+Vue的社区二手交易系统(WebSocket实时通讯、Echarts图形化分析、协同过滤算法)
  • 3-3〔OSCP ◈ 研记〕❘ WEB应用攻击▸WEB应用安全评估工具
  • nacos管理配置
  • Go语言内存管理深度解析:堆栈分配与逃逸分析的艺术
  • 深度学习篇---ResNet家族
  • Matlab高光谱遥感、数据处理与混合像元分解实践技术应用
  • Mysql系列--8、索引
  • Kubernetes部署MySQL主从复制
  • PyTorch中 nn.Linear详解和实战示例
  • Java全栈开发实战:从基础到微服务的深度探索
  • [Python]库Pandas应用总结
  • PE嵌入式签名检测方法
  • 阿里开源Vivid-VR:AI视频修复新标杆,解锁内容创作新可能
  • AR远程协助:能源电力行业智能化革新
  • 一键编译安装zabbix(centos)
  • Spark面试题
  • HTTP 协议与TCP 的其他机制
  • excel 破解工作表密码
  • Python之Flask快速入门
  • Redis类型之List
  • 自然语言处理——07 BERT、ELMO、GTP系列模型
  • lesson46-1:Linux 常用指令全解析:从基础操作到高效应用
  • Docker:常用命令、以及设置别名
  • 数据挖掘 6.1 其他降维方法(不是很重要)
  • 聊聊负载均衡架构
  • 关于窗口关闭释放内存,主窗口下的子窗口关闭释放不用等到主窗口关闭>setAttribute(Qt::WA_DeleteOnClose);而且无需手动释放
  • 【Python】QT(PySide2、PyQt5):列表视图、模型、自定义委托
  • 【芯片后端设计的灵魂:Placement的作用与重要性】
  • SQL 语句拼接在 C 语言中的实现与安全性分析
  • 跨语言统一语义真理及其对NLP深层分析影响