Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

Giải nén File ZIP

Giải nén ZIP trong trình duyệt. Duyệt nội dung, tải từng file hoặc xuất hàng loạt mục đã chọn. Dùng JSZip, không cần upload lên server.

Upload
Kéo thả file ZIP vào đây
hoặc nhấp để duyệt
Chọn file ZIP để giải nén

Về công cụ giải nén File

Lưu trữ ZIP là cách phổ quát để gói nhiều file thành một container nén — được tạo năm 1989 bởi Phil Katz, nay được chuẩn hóa thành ISO/IEC 21320 và được hỗ trợ tự nhiên bởi mọi hệ điều hành và trình duyệt hiện đại. Trình giải nén này đọc ZIP hoàn toàn trong trình duyệt của bạn bằng thư viện JSZip: nó phân tích central directory của file, liệt kê tên, kích thước, loại và kích thước nén của mỗi entry, và giải nén theo yêu cầu khi bạn nhấp tải xuống. Bạn có thể trích xuất từng file riêng lẻ, chọn hàng loạt bằng hộp kiểm, hoặc tải xuống mọi thứ dưới dạng file ZIP mới. Hỗ trợ thuật toán DEFLATE chuẩn, các entry stored (không nén) và các phần mở rộng ZIP64 cho file trên 4 GB. Kích thước đầu vào tối đa 100 MB. Xem thêm Nén File ZIPGiải nén 7Z.

Làm sao để trích xuất chỉ một file từ một ZIP lớn?

Tải ZIP lên và nhấp Giải nén, sau đó dùng ô lọc phía trên bảng file: gõ một phần tên file (hoặc chọn phần mở rộng như .log, .csv hay .json trong danh sách Loại) để thu hẹp hàng trăm mục xuống còn mục bạn cần. Nhấp nút Tải xuống của nó để lưu riêng file đó, hoặc tích vào hộp kiểm rồi dùng Tải đã chọn. Bạn cũng có thể nhấp Chọn tất cả khi đang lọc để lấy mọi mục khớp cùng lúc; chỉ những file bạn chọn mới được giải nén, nên việc rút một CSV ra khỏi kho lưu trữ 5 GB chỉ mất vài giây.

Tại sao công cụ này từ chối ZIP có mật khẩu trong khi công cụ desktop mở được?

ZIP hỗ trợ hai chế độ mã hóa: ZipCrypto (cũ, đã bị phá vỡ về mặt mật mã từ 2003) và AES-128/256 (được thêm bởi WinZip năm 2003, an toàn thực sự). Giải mã một trong hai yêu cầu hỏi người dùng mật khẩu và chạy cipher bên trong trình duyệt. JSZip, thư viện cung cấp năng lượng cho công cụ này, cố ý không triển khai giải mã dựa trên mật khẩu để giữ gói nhỏ và mô hình bảo mật đơn giản — không có cách nào để chúng tôi xác minh mật khẩu đúng trước khi thử giải mã mọi entry, và việc cung cấp nó tạo mục tiêu cho tấn công brute-force vào mật khẩu yếu. Để mở ZIP có mật khẩu, dùng 7-Zip (Windows/Linux), The Unarchiver (macOS) hoặc unzip CLI với cờ -P.

Tôi có thể trích xuất file cụ thể từ ZIP lớn mà không giải nén mọi thứ không?

Có — đó là phần xuất sắc của thiết kế ZIP. Không giống tar.gz nơi mọi thứ được nén tuần tự (bạn phải giải nén từ đầu để đọc cuối), ZIP lưu trữ mỗi file độc lập với nén riêng và central directory ở cuối lưu trữ liệt kê mọi entry với offset byte. Trình trích xuất của chúng tôi đọc central directory trước (thường vài KB bất kể kích thước lưu trữ) và chỉ giải nén các entry bạn chọn tải xuống — bạn có thể xem trước ZIP 5 GB và trích xuất chỉ một CSV 10 KB trong vài giây mà không bao giờ giải nén các entry khác. Đây là lý do ZIP là định dạng được chọn cho cập nhật phần mềm (bạn chỉ trích xuất file đã thay đổi) và gói JAR/APK (JVM tìm đến file class cụ thể theo yêu cầu).

Điều gì xảy ra với timestamp, quyền và quyền sở hữu file trong quá trình trích xuất?

ZIP lưu trữ ba timestamp mỗi entry (tạo, sửa đổi, truy cập) và quyền file Unix khi lưu trữ được tạo trên hệ thống Unix. Các trình trích xuất dựa trên trình duyệt như cái này không thể khôi phục quyền Unix vì File System Access API của JavaScript không phơi bày chmod — file đã trích xuất nhận quyền mặc định (thường 644 cho file, 755 cho thư mục trên hệ thống giống Unix). Timestamp sửa đổi được giữ lại khi được trình duyệt hỗ trợ, nhưng quyền sở hữu (UID/GID) không thể được khôi phục từ ngữ cảnh trình duyệt không root. Để khôi phục độ trung thực đầy đủ về quyền, sở hữu, ACL và thuộc tính mở rộng, dùng unzip CLI trên Linux/macOS với cờ -X hoặc 7-Zip trên Windows.

Giải nén File ZIP — Giải nén ZIP trong trình duyệt. Duyệt nội dung, tải từng file hoặc xuất hàng loạt mục đã chọn. Dùng JSZip, không cần upl
Giải nén File ZIP

Nén ZIP so với RAR, 7Z, tar.gz như thế nào?

Tỷ lệ nén phụ thuộc vào nội dung, nhưng cho văn bản và mã điển hình: ZIP đạt khoảng 30-40% kích thước gốc dùng DEFLATE; tar.gz dùng cùng DEFLATE nên tỷ lệ khớp; 7Z với LZMA2 đạt 20-25% (tốt hơn ZIP 15-20%); RAR với thuật toán mới nhất đạt 20-25% tương tự; tar.zst với ZSTD mức 19 khớp chất lượng LZMA trong khi giải nén nhanh hơn 3-5 lần. Lợi thế của ZIP là tương thích phổ quát — mọi OS đều trích xuất ZIP mà không cần phần mềm thêm — trong khi 7Z và RAR yêu cầu công cụ bên thứ ba trên Windows và macOS mặc định. Cho nén tối đa, dùng 7Z hoặc tar.zst; cho tính di động tối đa, dùng ZIP; cho lưu trữ đám mây của nhiều file nhỏ (log, backup), tar.zst đánh bại cả hai vì tránh overhead theo file.

ZIP64 là gì và tại sao trình duyệt của tôi thất bại trên lưu trữ lớn?

Đặc tả ZIP gốc dùng các trường 32-bit xuyên suốt, giới hạn file cá nhân ở 4 GB, số lưu trữ ở 65.535 file và tổng kích thước lưu trữ ở 4 GB. Những giới hạn này không thể đạt được năm 1989 nhưng thường xuyên bị chạm bởi lưu trữ backup, media và tập dữ liệu hiện đại. ZIP64 (được thêm năm 2001) mở rộng mỗi counter lên 64-bit, hỗ trợ file cá nhân đến 16 EB và số file không giới hạn. Công cụ hiện đại tự động viết ZIP64 khi cần, nhưng một số extractor cũ (extractor tích hợp của Windows XP, hệ thống nhúng, phiên bản Java rất cũ) từ chối tiêu đề ZIP64. JSZip hỗ trợ ZIP64 từ phiên bản 3.0, nên trình trích xuất của chúng tôi xử lý chúng, nhưng các lưu trữ rất lớn (>500 MB) thường thất bại trong bộ nhớ trình duyệt trước khi logic giải nén chạy.

Có rủi ro bảo mật khi trích xuất ZIP không tin cậy không?

Hai loại tấn công: (1) ZIP slip — lưu trữ độc hại chứa các entry với tên path-traversal như '../../../etc/passwd' hoặc 'C:\Windows\System32\evil.exe', mà các extractor ngây thơ viết mù quáng bên ngoài thư mục dự định. Trình trích xuất trình duyệt an toàn khỏi điều này vì File System Access API của JavaScript không cho phép viết bên ngoài thư mục do người dùng chọn và tải xuống bị cô lập trong thư mục Downloads. (2) Zip bomb — lưu trữ nhỏ (vài KB) mở rộng thành terabyte dữ liệu, làm cạn kiệt đĩa hoặc bộ nhớ. Ví dụ nổi tiếng 42.zip giải nén đệ quy thành ~4,5 PB số 0. Giới hạn đầu vào 100 MB và hiển thị kích thước theo file của chúng tôi bảo vệ chống lại các trường hợp cực đoan, nhưng luôn kiểm tra số lượng file và kích thước trước khi trích xuất các lưu trữ không xác định.

Tại sao tên file đã trích xuất hiển thị dấu chấm hỏi hoặc ký tự sai?

Đặc tả ZIP gốc từ 1989 chỉ định nghĩa tên file ASCII, để tên file không Latin (tiếng Việt có dấu, tiếng Trung, Cyrillic, emoji) ở trong tình trạng mã hóa lấp lửng. Các lưu trữ được tạo trên Windows thường dùng code page cũ (CP1252 cho Tây Âu, CP936 cho Trung giản thể) mà không khai báo nó; trình đọc mặc định UTF-8 và tạo đầu ra lộn xộn. Năm 2008 đặc tả ZIP đã thêm bit cờ UTF-8 (bit 11 của general purpose bit flag) — công cụ hiện đại (7-Zip 9.20+, WinRAR 5+, tiện ích lưu trữ tích hợp của macOS, unzip 6.0+ của Linux) đặt cờ này và tạo tên cross-platform chính xác. Nếu bạn thấy mojibake, lưu trữ được tạo trên hệ thống Windows cũ hơn không có cờ; đổi tên file sau khi trích xuất, hoặc mở ZIP với 7-Zip cho phép bạn ghi đè mã hóa.

Tôi có thể xem bên trong ZIP mà không tải xuống không?

Không từ trình duyệt trừ khi máy chủ lưu trữ ZIP hỗ trợ HTTP Range Requests VÀ CORS được cấu hình để cho phép nguồn của bạn đọc các phạm vi byte đó. Thủ thuật là central directory ZIP sống ở cuối file: bạn có thể phát hành yêu cầu Range cho 64 KB cuối cùng, phân tích central directory, sau đó phát hành thêm yêu cầu Range chỉ cho các entry bạn muốn. Các thư viện như Zarr (được dùng cho dữ liệu khoa học cloud-native) và unzipit.js minh họa mẫu này, và S3 + Cloudflare R2 phơi bày hỗ trợ Range mặc định. Với các công cụ như cái này, file phải được tải đầy đủ vào trình duyệt trước vì File API cho bạn toàn bộ byte, nhưng cho ZIP được lưu trữ tại URL, trích xuất một phần đang trở thành mẫu hiện đại.