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

Linux 指令篇:tar 命令详解与实战

前言

        tar(Tape Archive)是 Linux 中用于打包和压缩文件的常用命令,主要用于创建归档文件(archive)并进行解压。它不仅支持多种压缩格式,还能高效管理备份文件。

1. tar 命令的基本语法

tar 命令的基本格式如下:

tar [选项] [归档文件] [文件或目录]

常见选项及详细解释

选项作用详细说明
-c创建归档文件生成一个新的 tar 归档文件
-x解压归档文件从 tar 归档中提取文件
-v显示详细信息在执行过程中列出被处理的文件
-f指定文件名指定归档文件的名称
-z使用 gzip 压缩结合 gzip 进行压缩,生成 .tar.gz 文件
-j使用 bzip2 压缩结合 bzip2 进行压缩,生成 .tar.bz2 文件
-J使用 xz 压缩结合 xz 进行压缩,生成 .tar.xz 文件
-r追加文件到归档将新文件添加到已有 tar 归档中
-t列出归档内容显示 tar 归档中的文件列表
--remove-files归档后删除原文件归档成功后删除源文件,避免占用空间
--exclude=PATTERN排除特定文件在归档时排除匹配的文件

2. tar 命令的使用示例

2.1 创建 tar 归档文件

dir1 目录打包为 archive.tar

tar -cvf archive.tar dir1/

使用 gzip 压缩归档:

tar -czvf archive.tar.gz dir1/

使用 bzip2 压缩归档:

tar -cjvf archive.tar.bz2 dir1/

2.2 解压 tar 归档文件

解压 tar 归档文件:

tar -xvf archive.tar

解压 tar.gz 归档文件:

tar -xzvf archive.tar.gz

解压 tar.bz2 归档文件:

tar -xjvf archive.tar.bz2

2.3 查看归档文件内容

列出 tar 归档文件的内容:

tar -tvf archive.tar

2.4 追加文件到已有 tar 归档

archive.tar 添加 file.txt

tar -rvf archive.tar file.txt

2.5 从归档文件中提取特定文件

archive.tar 提取 file.txt

tar -xvf archive.tar file.txt

2.6 删除归档文件中的某个文件

tar 本身不支持直接删除文件,但可以使用以下方法重新创建归档:

tar --exclude=file.txt -cvf new_archive.tar archive.tar

2.7 归档后删除原文件

logs/ 目录打包,并在成功后删除原文件:

tar -czvf logs_backup.tar.gz --remove-files logs/

2.8 仅归档最近修改的文件

归档最近 7 天内修改的文件:

find /path/to/files -mtime -7 -print | tar -czvf recent_files.tar.gz -T -

3. tar 命令高级使用场景

3.1 远程备份(结合 SSH)

/var/log/ 目录打包并传输到远程服务器:

tar -czvf - /var/log/ | ssh user@remote "cat > /backup/logs.tar.gz"

3.2 解压到指定目录

解压 archive.tar.gz/tmp/ 目录:

tar -xzvf archive.tar.gz -C /tmp/

3.3 备份 MySQL 数据库

结合 mysqldump 进行数据库备份并压缩:

mysqldump -u root -p database_name | gzip > database_backup.sql.gz

3.4 增量备份

创建快照文件以跟踪增量备份的变化:

tar -czvf full_backup.tar.gz --listed-incremental=backup.snar /home/user/

进行增量备份(基于 backup.snar 记录的变化):

tar -czvf incremental_backup.tar.gz --listed-incremental=backup.snar /home/user/

4. 总结

tar 是 Linux 中强大的打包和压缩工具,熟练掌握它的用法可以极大提升文件管理和备份的效率。

如果觉得这篇博客对你有帮助,记得点赞 ⭐、收藏 📌、关注 🚀!


http://www.kler.cn/a/612245.html

相关文章:

  • ADB->查看具体应用包名、安装路径、所有应用包名输出到文件
  • 蓝桥杯--bfs专题第二个题目(leetcode103二叉树)
  • [操作系统] 进程间通信:命名管道原理与操作
  • 使用ProcessBuilder执行FFmpeg命令,进程一直处于阻塞状态,一直没有返回执行结果
  • PHP MySQL 预处理语句
  • 基于yolov11的铁路轨道铁轨缺陷检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • Excel处理控件Aspose.Cells指南:如何在不使用 Microsoft Excel 的情况下解锁 Excel 工作表
  • 结合代码理解Spring AOP的概念(切面、切入点、连接点等)
  • vue watch数据监听
  • 关于spark在yarn上运行时候内存的介绍
  • 【Minio-优化浅谈】
  • CI/CD(六) helm部署ingress-nginx(阿里云)
  • 【后端】【Django】信号使用详解
  • C#面向对象 一些细节
  • 基于C++实现一个平面上的形状编辑程序
  • ChatGPT 4o 更新了图像能力,效果怎么样?
  • 青否数字人直播系统包括六大互动功能,保障直播间能够实现智能化实时互动!
  • RSA算法深度解析:从数学基础到安全实践
  • Docker容器的kafka在VM虚拟机挂起重新运行之后连接异常解决
  • 【人工智能】一部正在书写的传奇,从诞生到未来蓝图