0

0

CentOS下怎么安装tar_CentOS解压与安装tar打包软件教程

絕刀狂花

絕刀狂花

发布时间:2025-08-28 13:54:01

|

492人浏览过

|

来源于php中文网

原创

CentOS系统通常预装tar,可通过tar --version检查,若未安装可用yum或dnf安装;tar用于打包和调用gzip、bzip2、xz等工具压缩,常用格式为.tar.gz、.tar.bz2、.tar.xz,支持排除文件、分卷、进度监控及优先级调整等高级功能。

centos下怎么安装tar_centos解压与安装tar打包软件教程

在CentOS系统下,

tar
通常是默认安装的,因为它是Linux系统中最基础的文件归档工具之一。如果你的系统确实缺少它,可以通过包管理器轻松安装,然后就可以利用它进行文件的打包、解包以及结合压缩工具进行归档压缩操作了。

解决方案

要使用

tar
,首先得确认它在不在你的系统里。最直接的办法是打开终端,输入
tar --version
。如果能看到版本信息,说明它已经就位了。要是提示“command not found”之类的错误,那咱们就得动手安装一下。

1. 检查

tar
是否安装

tar --version
which tar

如果上述命令有输出,比如显示

tar (GNU tar) 1.26
或类似的版本号,那就说明
tar
已经安装好了。
which tar
会告诉你
tar
可执行文件的路径。

2. 安装

tar
(如果缺失)

对于CentOS 7或更早的版本,使用

yum

sudo yum install tar

对于CentOS 8或更新的版本,

yum
已经被
dnf
取代了,但通常
yum
命令会重定向到
dnf
,或者你直接用
dnf

sudo dnf install tar

安装过程通常很快,因为它是个很小的核心工具。

3.

tar
的基本使用

tar
最核心的功能就是把多个文件或目录打包成一个单一的归档文件,或者从归档文件中提取内容。它本身不负责压缩,但可以调用其他压缩工具(如
gzip
bzip2
xz
)来完成压缩。

  • 打包文件/目录 (不压缩):

    tar -cvf myarchive.tar /path/to/directory /path/to/file1 /path/to/file2
    # -c: 创建归档
    # -v: 显示详细过程 (verbose)
    # -f: 指定归档文件名

    这个命令会将

    /path/to/directory
    /path/to/file1
    /path/to/file2
    打包成
    myarchive.tar

  • 打包并使用

    gzip
    压缩 (.tar.gz 或 .tgz):

    tar -czvf myarchive.tar.gz /path/to/directory
    # -z: 调用gzip进行压缩/解压缩

    这是最常用的方式,生成的文件后缀通常是

    .tar.gz
    或简写
    .tgz

  • 打包并使用

    bzip2
    压缩 (.tar.bz2 或 .tbz):

    tar -cjvf myarchive.tar.bz2 /path/to/directory
    # -j: 调用bzip2进行压缩/解压缩

    bzip2
    通常比
    gzip
    压缩率更高,但速度稍慢。

  • 打包并使用

    xz
    压缩 (.tar.xz 或 .txz):

    tar -cJvf myarchive.tar.xz /path/to/directory
    # -J: 调用xz进行压缩/解压缩 (注意是大写J)

    xz
    提供最高的压缩率,但速度也最慢,对CPU资源消耗也更大。

  • 解压归档文件 (到当前目录):

    tar -xvf myarchive.tar           # 解压 .tar
    tar -xzvf myarchive.tar.gz       # 解压 .tar.gz 或 .tgz
    tar -xjvf myarchive.tar.bz2      # 解压 .tar.bz2 或 .tbz
    tar -xJvf myarchive.tar.xz       # 解压 .tar.xz 或 .txz
    # -x: 提取文件

    解压时,

    tar
    会自动识别压缩类型(如果文件后缀正确),但显式指定
    -z
    ,
    -j
    ,
    -j
    是个好习惯。

    Tellers AI
    Tellers AI

    Tellers是一款自动视频编辑工具,可以将文本、文章或故事转换为视频。

    下载
  • 解压到指定目录:

    tar -xzvf myarchive.tar.gz -C /path/to/destination
    # -C: 指定解压目录 (Change directory)
  • 查看归档文件内容 (不解压):

    tar -tvf myarchive.tar
    tar -tzvf myarchive.tar.gz
    # -t: 列出归档内容

    这个命令可以让你在解压前先看看里面有什么,避免不必要的解压操作,特别是当你对文件内容不确定时。

CentOS上tar命令的基本用法与高级技巧

tar
命令在CentOS上是系统管理和数据备份的基石,它的基础用法大家基本都清楚,但有些高级技巧和参数,在实际操作中能帮上大忙。比如,有时候我们只想打包某个目录下的特定文件类型,或者需要排除一些不必要的文件,
tar
都能很好地应对。

一个我经常用到的场景是,打包一个项目目录,但要排除掉

node_modules
.git
这种体积庞大或不需要备份的目录。这时候
--exclude
参数就显得尤为重要了。

# 打包当前目录,排除node_modules和.git目录
tar -czvf myproject_backup.tar.gz . --exclude=./node_modules --exclude=./.git
# 注意:路径要和tar命令操作的相对路径一致,如果tar . 则exclude也要用./

另外,如果你想打包后直接通过网络传输,或者在处理非常大的文件时,可以考虑使用管道(pipe)。比如,直接将

tar
的输出通过
ssh
发送到另一台服务器,而不在本地创建临时文件:

tar -czf - /path/to/source | ssh user@remote_host "cat > /path/to/destination/backup.tar.gz"

这里

-
表示
tar
的输出是标准输出,而不是文件。这种方式在远程备份或迁移数据时特别高效。

tar与gzip、bzip2、xz:性能、压缩率与适用场景

很多人刚接触

tar
时,会把它的打包功能和压缩功能混为一谈,觉得
tar
本身就能压缩。其实不是,
tar
只负责归档,也就是把一堆文件和目录塞到一个
.tar
文件里,而压缩是
gzip
bzip2
xz
这些独立工具的活儿。
tar
命令中的
-z
-j
-j
选项,只是方便地调用了这些外部工具。

  • gzip
    (选项
    -z
    )
    :

    • 特点: 压缩速度最快,但压缩率相对最低。
    • 适用场景: 对速度要求高,或者数据量不是特别巨大,或者CPU资源有限的场景。比如日常的日志文件打包、小规模备份。文件后缀通常是
      .tar.gz
      .tgz
  • bzip2
    (选项
    -j
    )
    :

    • 特点: 压缩率比
      gzip
      高,但压缩和解压速度都比
      gzip
      慢。
    • 适用场景: 当你希望在可接受的速度范围内获得更好的压缩率时。例如,对不太频繁访问但需要长期存储的归档文件。文件后缀通常是
      .tar.bz2
      .tbz
  • xz
    (选项
    -j
    )
    :

    • 特点: 压缩率最高,但压缩和解压速度最慢,对CPU和内存的消耗也最大。
    • 适用场景: 对压缩率有极致要求,且不那么看重时间成本的场景。比如,发布软件的源代码包、长期归档的数据、或者在存储空间非常宝贵的情况下。文件后缀通常是
      .tar.xz
      .txz

在我个人的经验中,如果不是特别大的文件或者对存储空间有严格限制,我通常会选择

gzip
。它在速度和压缩率之间找到了一个很好的平衡点。但如果需要归档一个几百GB甚至几TB的数据库备份,并且希望尽可能节省磁盘空间,那我可能会倾向于
xz
,即使它需要更长的时间来完成。选择哪个工具,真的要根据具体的应用场景和资源限制来权衡。

处理大型文件或目录:tar的性能考量与优化技巧

当我们在CentOS上使用

tar
处理动辄几十GB甚至TB级别的大型文件或目录时,性能问题就变得尤为突出。我记得有一次需要打包一个存储了大量历史数据的日志服务器,目录结构复杂,文件数量庞大,直接
tar -czvf
下去,不仅慢得让人心焦,而且还可能遇到各种资源瓶颈。这时候,一些优化技巧就显得非常必要了。

  1. 分卷打包 (Splitting Archives): 如果你打包的文件最终会超过某个文件系统或传输协议的限制(比如FAT32不支持大于4GB的文件,或者你只想通过邮件发送小块数据),可以使用

    split
    命令配合
    tar
    进行分卷。

    # 先打包但不压缩
    tar -cvf - /path/to/large_directory | split -b 2G -d -a 3 large_directory.tar.
    # 这会生成 large_directory.tar.000, large_directory.tar.001 等文件,每个2GB。
    # -b 2G: 每2GB一个文件
    # -d: 使用数字后缀
    # -a 3: 后缀长度为3位
    
    # 解包时:
    cat large_directory.tar.* | tar -xvf -

    这种方式在分发大型归档时非常实用,也避免了单一大文件可能带来的问题。

  2. 排除不必要的文件/目录 (

    --exclude
    ): 这是最直接也最有效的优化手段之一。在打包前仔细分析源目录,排除掉那些临时文件、缓存、日志、版本控制元数据(如
    .git
    .svn
    )或编译生成物(如
    node_modules
    target
    )等。这些文件往往占据大量空间,但对备份来说价值不大。

    tar -czvf my_backup.tar.gz /path/to/project \
        --exclude='*.log' \
        --exclude='tmp/' \
        --exclude='cache/' \
        --exclude='node_modules'

    注意

    --exclude
    的路径匹配规则,它通常是相对于你
    tar
    命令所操作的根目录。

  3. 监控进度 (

    pv
    命令): 对于长时间运行的
    tar
    操作,没有进度条会让人很焦虑。
    pv
    (Pipe Viewer) 是一个非常棒的工具,可以显示数据通过管道的进度。

    tar -czf - /path/to/large_directory | pv -s $(du -sb /path/to/large_directory | awk '{print $1}') | cat > my_backup.tar.gz
    # 或者更简单,但无法预估总大小:
    # tar -czf - /path/to/large_directory | pv > my_backup.tar.gz

    pv
    会给你一个实时的进度条、传输速度和预计剩余时间,大大提升用户体验。

  4. 使用

    ionice
    nice
    调整优先级:
    如果
    tar
    操作在生产服务器上运行,你可能不希望它占用过多的I/O或CPU资源,影响其他服务的性能。
    ionice
    可以调整I/O优先级,
    nice
    可以调整CPU优先级。

    # 以较低的I/O优先级运行tar
    ionice -c 3 tar -czvf my_backup.tar.gz /path/to/large_directory
    
    # 以较低的CPU优先级运行tar
    nice -n 19 tar -czvf my_backup.tar.gz /path/to/large_directory

    这能让

    tar
    在后台“安静地”工作,减少对前台服务的影响。

  5. 考虑文件系统缓存和I/O优化: 对于非常大的归档,文件系统的读写性能是关键。确保你的磁盘I/O不是瓶颈。如果可能,在高速存储(如SSD)上进行打包和解包操作。此外,Linux的内核会进行文件系统缓存,对于重复读写同一个文件,第二次会快很多。但对于一次性的大文件归档,这个效果不明显。

这些技巧的运用,能让

tar
这个看似简单的工具,在面对真实世界复杂和庞大的数据时,变得更加高效和可控。毕竟,不是所有场景都允许我们“等它慢慢跑完”。

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

391

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

572

2023.08.10

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

639

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

527

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

264

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

549

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

513

2024.04.09

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

527

2023.07.06

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 4.5万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号