TAR.GZ 压缩工具
完全在浏览器中将多个文件或文件夹打包为 tar 后再用 gzip 压缩,可按需下载 .tar.gz・.tgz・.tar(不压缩)・.gz(单文件)等多种格式。适合上传到 Linux 服务器。文件内容绝不会上传到服务器。
什么是 TAR.GZ 创建
TAR.GZ 创建是可把多个文件或文件夹汇总为一个 tar.gz(或 tgz・tar・gz)文件的工具。使用浏览器标准内置的 Compression Streams API,全部处理都在设备内完成,文件内容不会上传至外部服务器。即便是机密性较高的数据或包含个人信息的文件,也可放心压缩。
输出格式可从四种中选择。.tar.gz 是先用 tar 汇总再以 gzip 压缩的最常见格式,广泛用于向 Linux 服务器上传与分发。.tgz 的内容与 .tar.gz 完全相同,只是扩展名较短的别名。.tar 为跳过压缩的无压缩格式,.gz 则不经 tar、直接压缩单个文件,可按用途区分使用。
TAR.GZ 创建的使用方法
- 添加文件或文件夹 把文件或文件夹拖放到放置区域,或通过“选择文件”“选择文件夹”按钮添加。
- 确认并输入文件名 在输入栏中确认所输出压缩包的文件名,并按需改为易于辨识的名称。
- 选择输出格式 在 .tar.gz・.tgz・.tar・.gz 中选择契合用途的格式。仅当文件为1个时才可选择 .gz。
- 创建压缩包并下载 按下“创建压缩包并下载”按钮后,会在浏览器内执行压缩处理并自动下载。
用好本工具的小技巧
- 整体拖入文件夹后,会保留原有的目录结构打包进 tar。如果单独选择文件,生成的压缩包则没有目录结构,是扁平的。
- .tar.gz 与 .tgz 内容完全相同,只是扩展名不同。如果要提供给 npm 软件包等要求 .tgz 扩展名的工具使用,请选择 .tgz。
- 选择".tar(不压缩)"后会跳过 gzip 压缩步骤。对于图片、视频、ZIP 等本身已经压缩过的文件,压缩前后体积几乎不变,此时不压缩反而处理更快。
- .gz 是不经过 tar、直接压缩单个文件的传统格式。只有在仅需压缩 1 个文件(例如单个日志文件)时才能选择。
- 打包大量文件或体积很大的文件时,由于处理过程占用浏览器内存,可能会比较耗时,在某些环境下甚至会失败。如果总体积达到数百 MB 至数 GB,建议分成几批分别压缩。
TAR.GZ 创建的应用场景
向 Linux 服务器上传前的准备
把网站或项目文件夹整体打包为 tar.gz,即可让经由 SSH 的上传与部署作业只需传输一个文件。
准备 npm 形式的 .tgz 包
可仅用浏览器,为像 npm 包那样以 .tgz 扩展名为前提的工具制作分发物,而无需使用专用 CLI。
日志文件的集中保管
把分散的每日日志等汇总为一个 tar.gz,即可在保管或交接时减少文件数量。
不经服务器的多文件交付
无需在邮件或聊天中附上多个文件,可汇总为一个压缩包;而且压缩处理全部在手边设备完成,适合不愿把内容交给外部服务器的场合。
保留文件夹结构的备份
整个文件夹拖放即可在保留原有层级结构的状态下打包,适合希望原样保存配置文件群等结构的情形。
术语集
- tar
- 用于把多个文件汇总为一个(进行归档)的格式与命令。为 Tape ARchive 的缩写,其本身不具备压缩功能。
- gzip
- 用于压缩数据的格式与命令。把 tar 汇总后的文件用 gzip 压缩即成为 tar.gz。
- .tgz
- 赋予与 .tar.gz 内容完全相同之压缩包的、较短别名的扩展名。是需要8字符以内文件名的旧环境的遗留。
- PAX 头
- 因旧 tar 格式的文件名最多只能存放100字节,为处理较长路径而设计的扩展头。
- Compression Streams API
- 浏览器标准内置、可从 JavaScript 直接处理 gzip 等压缩与解压的 Web API。无需经过服务器,仅在客户端即可完成压缩处理。
- ustar 格式
- 由 POSIX 标准化的 tar 头格式。文件名字段被限制为100字节,超出部分以 PAX 头补足。
常见问题
闲话 ― tar 的 512 字节与 PAX 扩展头
tar 这种文件格式最初是为 20 世纪 70 年代的磁带设备(Tape ARchive)设计的,光是名字就带着一股老式机房的气息。也正因为脱胎于磁带这种只能顺序读写的介质,数据才会以 512 字节为单位划分成一个个"块";如果文件内容不是 512 字节的整数倍,末尾就会补 0 填充,凑齐到下一个块边界。正是这种朴素又固执的结构,让 tar 至今仍然是一种易于实现、又与流式处理天然契合的格式。
不过旧式的 ustar 格式头部中,用于存放文件名的字段只有短短 100 字节,这在文件夹层级很深或名称很长的今天很容易超标。为了绕开这个历史遗留的限制,人们后来设计出了 PAX 扩展头:在正式条目之前插入一个特殊的块,专门用来记录"真正的文件名",从而变相突破了原本 100 字节的天花板。本工具在遇到超过 100 字节的路径时,也会自动附加 PAX 扩展头,确保长路径不会被截断。
与 ZIP 不同,tar 和 gzip 的组合并没有密码保护机制,这其实是两者"各司其职"的设计哲学所致——tar 只负责"打包",gzip 只负责"压缩",谁都没有把加密这件事纳入自己的职责范围。如果需要分发机密性较高的文件,建议改用支持加密的姊妹工具 ZIP 压缩工具。