15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用
22.10.2024
2 +1

如何在任何设备上解压文件:Windows、macOS、Android、iOS 和 Linux

解压文件是指对压缩包进行解压缩——通常是 .zip 容器——以将其原始内容恢复为可用、可读的状态。每个主流操作系统都内置了原生解压支持,因此处理标准 .zip 压缩包无需第三方软件。对于 .7z.rar.tar.gz 等格式或受密码保护的压缩包,专用工具可提供更广泛的编解码器支持、更强的加密处理能力以及批量处理功能。

本指南深入介绍了所有主流平台的技术细节,包括大多数教程完全跳过的命令行方法,以及最强大的第三方工具对比、常见故障模式,以及每种方法适用场景的说明。

为什么文件压缩与解压仍然重要

压缩包可减小传输体积,将目录树打包为单一可移植对象,并在格式支持的情况下保留文件权限和元数据。例如,在 VPS 托管环境中,部署应用程序通常意味着上传 .tar.gz.zip 压缩包并在服务器端解压——这使得命令行解压成为一项必备技能,而非可选项。

了解内部机制也有助于防止数据丢失。.zip 文件为每个条目存储独立的本地头部和 CRC-32 校验和。压缩包末尾损坏的中央目录可能导致 GUI 工具将文件显示为损坏,但 unzip -FF7-Zip 的修复模式通常可以恢复大部分条目。

如何在 Windows 上解压文件

Windows 10 和 Windows 11 内置了直接集成到文件资源管理器中的原生解压引擎。处理标准 .zip 压缩包无需安装第三方软件。

使用文件资源管理器(图形界面方法)

第一步——找到压缩包。打开文件资源管理器,导航到包含 .zip 文件的文件夹。ZIP 压缩包显示为带有拉链图案的文件夹图标。

第二步——打开右键菜单。右键单击 .zip 文件。在 Windows 11 上,如果经典右键菜单未立即显示,请先选择显示更多选项

第三步——全部解压。点击全部解压。弹出对话框提示您输入目标路径。默认路径为以压缩包命名的子文件夹,位于同一目录下。

第四步——选择目标位置并解压。点击浏览选择其他路径,然后点击解压。对于大型压缩包,文件资源管理器会显示进度条。

第五步——验证输出。完成后目标文件夹会自动打开。在删除原始压缩包之前,请确认文件数量和目录结构符合预期。

使用 PowerShell(命令行方法)

对于脚本化部署、自动化流水线或无界面的 Windows Server 环境,PowerShell 的 Expand-Archive cmdlet 是正确的工具:

# Extract to a specific destination folder
Expand-Archive -Path "C:Downloadsarchive.zip" -DestinationPath "C:Projectsmyapp"

# Overwrite existing files without prompting
Expand-Archive -Path "C:Downloadsarchive.zip" -DestinationPath "C:Projectsmyapp" -Force

-Force 标志在部署脚本中至关重要——如果没有它,当目标文件已存在时,该 cmdlet 会抛出终止性错误。

使用旧版 tar 命令(Windows 10 1803 及以上)

Windows 10 版本 1803 及更高版本内置了 BSD tar,可原生处理 .zip,同时支持 .tar.tar.gz.tar.bz2

tar -xf archive.zip -C C:Projectsmyapp

-C 标志用于指定目标目录。这在批处理文件和 CI/CD 流水线中特别有用,因为这些环境中可能存在 PowerShell 执行策略限制。

Windows 关键陷阱:”已阻止”文件属性

从互联网下载的文件会获得备用数据流标记(Zone.Identifier),Windows 将其标记为潜在不安全文件。解压被阻止的压缩包可能会静默删除或隔离内容。解压前,请右键单击 .zip,选择属性,勾选”常规”选项卡底部的解除锁定,或使用 PowerShell:

Unblock-File -Path "C:Downloadsarchive.zip"

跳过此步骤是 Windows 上解压后的可执行文件或 DLL 无法正常运行的最常见原因之一。

如何在 macOS 上解压文件

macOS 内置了归档实用工具,可通过双击透明地处理 .zip 解压。对于 .tar.gz.tar.bz2.7z,终端提供完整的控制能力。

使用归档实用工具(图形界面方法)

第一步——找到压缩包。打开 Finder,导航到 .zip 文件。它显示为压缩文件夹图标。

第二步——双击解压。归档实用工具静默启动,将内容解压到同一目录下的新文件夹中,文件夹名称与压缩包相同(去掉 .zip 扩展名)。

第三步——验证输出。新文件夹立即出现。归档实用工具不会提示选择目标位置——如果需要解压到特定路径,请使用下面的终端方法。

使用终端(命令行方法)

# Extract a .zip archive to the current directory
unzip archive.zip

# Extract to a specific destination directory
unzip archive.zip -d /Users/yourname/Projects/myapp

# List archive contents without extracting
unzip -l archive.zip

# Extract a password-protected zip
unzip -P secretpassword archive.zip -d /tmp/output

对于 .tar.gz 压缩包——Linux 软件发行版和服务器备份的标准格式:

# Extract .tar.gz to current directory
tar -xzf archive.tar.gz

# Extract .tar.gz to a specific directory
tar -xzf archive.tar.gz -C /usr/local/myapp

# Extract .tar.bz2
tar -xjf archive.tar.bz2 -C /usr/local/myapp

# Extract .tar.xz (highest compression ratio)
tar -xJf archive.tar.xz -C /usr/local/myapp

macOS 特有陷阱:Gatekeeper 与隔离

macOS 会对下载的压缩包应用 com.apple.quarantine 扩展属性。即使解压后,内容也会继承此属性。如果解压后的二进制文件拒绝启动,请清除隔离标志:

xattr -rd com.apple.quarantine /path/to/extracted/folder

这是在 macOS 上部署下载的软件包时常见的困惑来源。

如何在 Linux 上解压文件

在 Linux 上,命令行解压不是可选项——它是标准工作流程,尤其是在无界面服务器上。如果您管理独立服务器或云 VPS,这些命令是日常操作。

安装解压工具

大多数 Linux 发行版默认包含 unziptar。如果缺少:

# Debian / Ubuntu
sudo apt update && sudo apt install unzip p7zip-full

# RHEL / CentOS / AlmaLinux / Rocky Linux
sudo dnf install unzip p7zip p7zip-plugins

# Arch Linux
sudo pacman -S unzip p7zip

解压 ZIP 压缩包

# Basic extraction to current directory
unzip archive.zip

# Extract to a specific directory (creates it if absent)
unzip archive.zip -d /var/www/html/mysite

# Extract a single file from the archive
unzip archive.zip config/settings.php -d /var/www/html/mysite

# Suppress output (useful in scripts)
unzip -q archive.zip -d /var/www/html/mysite

# Test archive integrity without extracting
unzip -t archive.zip

解压 TAR 压缩包

# .tar.gz (gzip-compressed)
tar -xzf backup.tar.gz -C /var/backups/restored/

# .tar.bz2 (bzip2-compressed — slower but better ratio)
tar -xjf backup.tar.bz2 -C /var/backups/restored/

# .tar.xz (xz-compressed — best ratio, slowest)
tar -xJf backup.tar.xz -C /var/backups/restored/

# Verbose output — lists each file as it extracts
tar -xzvf backup.tar.gz -C /var/backups/restored/

# Extract a single file or directory from a tar archive
tar -xzf backup.tar.gz -C /tmp/ ./etc/nginx/nginx.conf

保留文件权限和所有权

这是一个关键的服务器管理细节,GUI 工具和基础教程始终忽略。在 Linux 服务器上解压应用程序压缩包时,必须保留所有权和权限:

# Preserve permissions (default with tar)
tar -xzpf archive.tar.gz -C /var/www/html/

# Extract and set ownership to www-data (web server user)
tar -xzf archive.tar.gz -C /var/www/html/ && chown -R www-data:www-data /var/www/html/myapp

tar 中的 -p 标志明确保留权限。如果所有权不正确,即使文件存在,Web 应用程序也会因权限被拒绝而失败。

如何在 Android 上解压文件

Android 并非在所有 OEM 版本的原生文件应用中都内置了归档管理器。通常需要专用应用程序。

第一步——安装支持压缩包的文件管理器。推荐选项:

  • Files by Google——简洁轻量,原生支持 .zip
  • ZArchiver——支持 .zip.7z.rar.tar.gz.tar.bz2 及加密压缩包
  • RAR by RARLAB——WinRAR 开发商官方应用,支持 .rar.zip

第二步——导航到压缩包。打开应用,浏览到包含 .zip 或其他压缩包文件的文件夹。

第三步——开始解压。长按或点击压缩包。选择解压解压到此处。ZArchiver 会显示目标位置选择器;Files by Google 默认解压到同一目录。

第四步——验证输出。导航到目标文件夹,确认内容可以访问。

Android 特别说明:如果压缩包是通过浏览器下载的,通常保存在 /storage/emulated/0/Download/ 中。某些 OEM 文件管理器限制对特定路径的访问——如果解压静默失败,请切换到 ZArchiver,它会请求更广泛的存储权限。

如何在 iPhone 和 iPad 上解压文件

iOS 13 及更高版本在文件应用中内置了原生 .zip 解压支持。标准压缩包无需第三方应用。

第一步——打开文件应用。找到 .zip 文件。常见位置包括下载iCloud 云盘我的 iPhone

第二步——点击压缩包一次。文件应用会自动将内容解压到同一位置的新文件夹中。没有目标位置选择器——解压始终在原位进行。

第三步——访问解压后的文件夹。与压缩包同名(去掉 .zip)的文件夹立即出现。

iOS 上的非 ZIP 格式:文件应用不支持 .rar.7z.tar.gz。请使用 iZip(免费,支持 .zip.rar.7z.tar)或 Archiver 4(付费,格式支持出色,与 iCloud 深度集成)。

第三方归档工具:功能对比

当原生工具不够用时——处理 .rar 压缩包、AES-256 加密的 ZIP、多卷压缩包或固实压缩包——第三方工具就变得必不可少。下表按专业环境中重要的标准对比了最广泛使用的选项。

工具平台许可证支持格式加密图形界面命令行突出优势
7-ZipWindows、Linux免费/开源ZIP, 7Z, TAR, GZ, BZ2, XZ, RAR(解压), ISO, WIMAES-256是(7z最佳压缩比;完全开源
WinRARWindows、macOS共享软件(试用)RAR, ZIP, TAR, GZ, BZ2, 7Z, ISO, CABAES-256是(rar最佳 RAR 创建和修复支持
The UnarchivermacOS免费ZIP, RAR, 7Z, TAR, GZ, BZ2, LZH, ISO, CAR有限macOS 格式支持最广;App Store 可下载
ZArchiverAndroid免费(提供 Pro 版)ZIP, 7Z, RAR, TAR, GZ, BZ2, XZ, ZSTAES-256最佳 Android 归档管理器
iZipiOS免费(提供 Pro 版)ZIP, RAR, 7Z, TAR, GZAES-256与文件应用和 iCloud 深度集成
p7zipLinux免费/开源ZIP, 7Z, TAR, GZ, BZ2, XZ, RAR(解压)AES-256是(7z服务器端脚本;与 7-Zip 完全相同
PeaZipWindows、Linux免费/开源200+ 种格式AES-256格式支持最广;提供便携版

处理受密码保护和加密的压缩包

受密码保护的压缩包在安全文件传输、软件分发和备份工作流中很常见。每种工具处理方式略有不同。

在 Windows 上使用 7-Zip:

# 7-Zip command-line extraction with password
7z x archive.zip -pYourPassword -o"C:output"

在 Linux / macOS 上使用 unzip

unzip -P YourPassword archive.zip -d /output/path

在 Linux 上使用 7z(p7zip):

7z x archive.7z -pYourPassword -o/output/path

重要安全提示:以命令行参数形式传递密码会将其暴露在进程列表(ps aux)和 Shell 历史记录中。在生产环境中,请使用密码文件或环境变量:

# Read password from a file (7-Zip supports this via stdin piping)
7z x archive.7z -p"$(cat /etc/archive-password)" -o/output/path

之后使用 history -c 清除 Shell 历史记录,或配置 HISTCONTROL=ignorespace 并在命令前加一个空格。

在远程服务器上解压压缩包

在管理 带 cPanel 的 VPS 或裸 Linux VPS 上的 Web 应用程序时,最高效的部署工作流是上传压缩包并在服务器端解压,而不是传输数千个单独的文件。

# Upload archive via SCP
scp myapp.tar.gz user@yourserver.com:/var/www/html/

# SSH into the server and extract
ssh user@yourserver.com
cd /var/www/html/
tar -xzf myapp.tar.gz
rm myapp.tar.gz  # Remove archive after successful extraction

对于大型压缩包,请在 screentmux 会话中运行解压,以防止 SSH 连接断开时中断:

screen -S deploy
tar -xzf largebackup.tar.gz -C /var/www/html/
# Detach with Ctrl+A, D — reattach with: screen -r deploy

这种模式是在独立服务器上恢复备份或部署应用程序包时的标准做法。

常见解压错误及修复方法

“End-of-central-directory signature not found”——压缩包被截断或损坏。这通常发生在下载中断时。请重新下载文件,如果来源提供了 MD5/SHA256 校验和,请进行验证。尝试使用以下方法恢复:

zip -FF corrupted.zip --out recovered.zip
unzip recovered.zip -d /output

“Cannot create file: filename too long”——Windows 有 260 字符的 MAX_PATH 限制。在组策略中启用长路径支持(Computer Configuration > Administrative Templates > System > Filesystem > Enable Win32 long paths),或使用 7-Zip,它可以绕过此限制。

Linux 上解压时出现”Permission denied”——目标目录由其他用户拥有或具有严格的权限设置。对解压命令使用 sudo,或先调整所有权:

sudo chown -R $USER:$USER /destination/path
unzip archive.zip -d /destination/path

“Unsupported compression method”——压缩包使用了工具不支持的压缩算法(例如,较新 ZIP 实现中的 Zstandard,或 7-Zip 创建的 .zip 文件中的 LZMA)。请安装 7-Zip 或 p7zip,它们支持最广泛的算法集。

文件解压后显示为空或零字节——通常是由于解压的 .zip 只包含目录结构而没有实际文件数据,或者是 macOS 归档实用工具处理某些在 Linux 上创建的 .zip 文件时的特有问题。解压前请使用 unzip -l archive.zip 检查内容。

决策矩阵:选择正确的解压方法

场景推荐方法
Windows 桌面上的标准 .zip文件资源管理器 > 全部解压
Windows Server 上的脚本化部署PowerShell Expand-Archive
macOS 桌面上的标准 .zip双击(归档实用工具)
macOS 或 Linux 上的 .tar.gz / .tar.bz2终端 tar -xzf / tar -xjf
Linux VPS 上的服务器端解压通过 SSH 使用 unziptar
任意平台上的 .rar 压缩包7-Zip(Windows/Linux)或 The Unarchiver(macOS)
受密码保护的压缩包-p 标志的 7-Zip CLI
损坏压缩包的恢复先用 zip -FF 再用 unzip,或使用 7-Zip 修复
移动设备(Android)ZArchiver
移动设备(iOS)文件应用(.zip)或 iZip(其他格式)
多卷压缩包(.zip.001.part1.rar7-Zip 或 WinRAR

技术要点清单

  • 在解压到生产目录之前,始终使用 unzip -t7z t 验证压缩包完整性。
  • 在 Linux 服务器上,解压应用程序包时使用 tar -xzpf(注意 -p 标志)以保留文件权限。
  • 在 Windows 上解压前,先解除下载的 .zip 文件的锁定,以避免文件被静默隔离。
  • 使用 xattr -rd com.apple.quarantine 从解压后的二进制文件中移除 macOS 隔离属性。
  • 在共享或有日志记录的环境中,切勿以明文 CLI 参数形式传递压缩包密码——请使用密钥文件或环境变量。
  • 对于服务器部署,请在 screentmux 会话中进行解压,以在 SSH 断开时保持连接。
  • 将 7-Zip 或 p7zip 作为通用备选方案——它在任何平台上处理的格式和边缘情况都比任何原生工具更多。
  • 解压到 Web 服务器目录后,在测试应用程序之前,始终验证所有权(ls -la)并将其设置为 Web 服务器用户(www-datanginxapache)。

常见问题

Windows 11 是否原生支持 .7z.rar 解压?

不支持。Windows 11 的内置解压引擎仅处理 .zip.cab.tar(通过 tar 命令)。对于 .7z.rar 及其他格式,必须安装 7-Zip 或 WinRAR。

.zip.tar.gz 有什么区别?

.zip 压缩包对每个文件独立压缩并存储各自的头部,使随机访问速度快,但整体压缩效率较低。.tar.gz 首先将所有文件打包成单一未压缩的 .tar 流,然后对整个流应用 gzip 压缩——压缩比更高,但访问任何单个文件都需要完整的顺序解压。

我能否直接在 Linux 服务器上解压 .zip 文件,而无需先下载到本地?

可以。使用 wgetcurl 将压缩包直接下载到服务器,然后就地解压。对于可公开访问的压缩包,您还可以通过 curl 将 URL 直接管道传输到 bsdtarcurl -L https://example.com/archive.zip | bsdtar -xf- -C /destination/

为什么在 Linux 服务器上解压的文件有时权限不正确?

.zip 格式仅在使用兼容工具在类 UNIX 系统上创建压缩包时才存储 UNIX 权限。在 Windows 上创建的压缩包通常不存储权限元数据,因此 unzip 会根据当前 umask 分配默认权限。解压后请明确使用 chmodchown 为您的 Web 服务器或应用程序用户设置正确的权限。

直接在服务器上解压通过电子邮件收到的压缩包是否安全?

不安全。解压前请始终使用 unzip -l7z l 检查压缩包内容。恶意压缩包可能包含路径遍历序列(例如 ../../etc/cron.d/backdoor),将文件写入预期目标之外的位置。使用 unzip -d /safe/sandbox/path 并在将文件移至生产环境之前验证输出。对于处理用户上传压缩包的服务器,请考虑使用 ClamAV 进行扫描。

15%

全场主机优惠15%

测试技能,享折扣

使用代码:

Skills
开始使用