本文依旧属于 Linux 文件管理的基础内容,将深入解析 Linux 系统中归档与压缩的核心工具,详细讲解 tar 命令的完整功能,旨在帮助读者掌握高效数据整理与备份文件的实用技能。
[本文基于 CentOS Linux release 7 系统环境]
在日常工作中,你是否遇到过这样的场景:需要将几十个零散文件打包发送给同事或上传服务器,或者面对一个几百兆的日志文件想要减小体积方便存储,亦或是需要备份整个项目目录并保留文件权限结构?
这正是归档与压缩技术的用武之地。通过归档可以将多个文件打包成一个整体,通过压缩可以减少文件包的大小。这两个操作相辅相成,是系统管理、数据备份和文件传输的基础。
掌握归档与压缩命令,意味着你能更高效地处理日常工作中的文件管理任务。无论是在服务器上备份关键数据,还是在开发中打包源代码,或是将大量文档压缩后通过邮件发送,这些技能都能显著提升你的工作效率。
一、归档和压缩的基本概念
在深入具体命令前,我们需要先明确归档与压缩这两个关键概念的区别。
归档(Archiving):将多个文件或目录及其元数据(权限、时间戳、所有者信息等)组合成一个单一文件,但不一定减小文件大小。这一过程有三个关键特点:
- • 元数据保留:保持原始文件的权限、时间戳、所有者等信息;
- • 体积不变:归档后的文件大小基本等于原文件总和。
压缩(Compression):通过算法减少文件占用的磁盘空间,可以针对单个文件或多个文件。主要原理包括:
- • 算法优化:不同的算法在速度与压缩率之间有不同的权衡;
打个比方,归档就像把散落在地上的书本收集到一个箱子里,便于整体搬运,但箱子大小等于书本体积之和;而压缩就像使用真空袋包装衣物,在保持衣物完好的前提下,最大限度地减少占用空间。
在实际应用中,归档与压缩这两个过程经常结合在一起:先归档后压缩,或者直接使用支持压缩的归档工具,将这两个步骤合二为一,形成“压缩归档”这一常用操作模式。
接下来,我将先介绍最常用的归档和压缩命令——tar。
二、归档和压缩的常用命令·tar
简介
- • 名称:tar - tape archive(磁带存档)
- • 语法:
tar [OPTION...] [FILE]... - • 描述:
tar 是最经典、最强大的归档工具。虽然最初是为磁带备份设计的,但现在已成为 Linux 系统中最常用、功能最全面的归档命令。它不仅能将多个文件打包成一个文件,还能保留文件的权限、所有权、时间戳等元数据信息。在实际使用中,tar 也支持直接在归档时进行压缩,这是最常用的方式。
示例
1. 归档操作
- • 创建归档文件:创建一个新的归档文件,可包含多个文件和目录,并保留完整的文件属性。
# 将 file1.txt 和 file2.txt 归档到 archive.tar 中tar -cvf archive.tar file1.txt file2.txt# 创建基础归档(归档整个目录)tar -cvf project_backup.tar /home/user/project/
选项说明:
- • 查看归档内容:列出归档文件中的内容信息,可查看文件名、大小、权限、时间戳等详细属性信息。
# 列出归档文件中的内容tar -tvf archive.tar
选项说明:
- •
-t:仅列出归档内容(list),不验证数据完整性。
- • 提取归档文件:从归档文件中提取内容到文件系统,支持全量提取和选择性提取。
# 完全提取到当前目录tar -xvf archive.tar# 提取到指定目录tar -xvf archive.tar -C /target/directory/# 仅提取特定文件tar -xvf archive.tar important_document.pdf config.ini# 交互式提取(询问每个文件)tar -xvf archive.tar -w
选项说明:
- •
-w:交互模式,询问每个文件的处理方式(wait for confirmation)
2. 压缩归档
- • 创建压缩归档:在创建归档时同时进行压缩,支持多种主流压缩算法。
# 使用 gzip 压缩(.tar.gz 或 .tgz)tar -czvf archive.tar.gz directory/# 使用 bzip2 压缩(.tar.bz2 或 .tbz2)tar -cjvf archive.tar.bz2 directory/# 使用 xz 压缩(.tar.xz 或.txz)tar -cJvf archive.tar.xz directory/
选项说明:
- • 查看压缩归档
# 查看 .gz 压缩的归档内容tar -tzvf archive.tar.gz# 查看 .bz2 压缩的归档内容tar -tjvf archive.tar.bz2# 查看 .xz 压缩的归档内容tar -tJvf archive.tar.xz
- • 解压压缩归档
# 解压 .tar.gz 文件tar -xzvf archive.tar.gz# 解压 .tar.bz2 文件tar -xjvf archive.tar.bz2# 解压 .tar.xz 文件tar -xJvf archive.tar.xz
通常,tar 能自动识别压缩格式并解压,所以有时可以简化解压选项:
# tar 通常能自动识别压缩格式并解压tar -xvf archive.tar.gztar -xvf archive.tar.bz2tar -xvf archive.tar.xz
三、小结
tar 是 Linux 系统中功能全面的核心归档工具,它能将多个文件或目录打包成单一文件并完整保留文件属性。其核心操作可通过组合简单选项完成:使用 tar -cvf 创建归档,tar -tvf 查看内容,tar -xvf 提取文件。更重要的是,它能直接整合压缩功能,常用 -z、-j、-J 选项分别调用 gzip、bzip2、xz 算法,实现“归档并压缩”或“解压并展开”的一步操作(如 tar -czvf 创建 .tar.gz,tar -xvf 智能解压),是文件备份、打包和分发的首选工具。
此番炼器手札,炉火尚未全熄。若道友观之有趣,或可暂留此间,结一尘缘。待下回开炉铸器,新得感悟,必先与同道分享。