Chuyển đến nội dung

Chọn định dạng file nén

Bốn định dạng, ba cách thiết kế thực sự khác nhau, và một định dạng mà không phần mềm miễn phí nào được phép tạo ra. Nên chọn cái nào gần như hoàn toàn phụ thuộc vào người sẽ mở file.

Xem xét lần cuối

Câu trả lời ngắn gọn

Gửi file cho ai đó: ZIP. Nó mở được trên mọi máy Windows, macOS và Linux sản xuất trong thế kỷ này mà không cần cài thêm gì. Điều đó đáng giá hơn bất kỳ lợi thế nén nào, và đây là định dạng duy nhất có được điều đó.

Sao lưu hoặc di chuyển cả cây thư mục trên Unix: tar.gz. Nó ghi lại quyền truy cập, chủ sở hữu và liên kết tượng trưng (symbolic link) — điều mà không định dạng phổ biến nào khác làm đúng — và nén tốt hơn ZIP.

Nén nhỏ hết mức có thể: 7z. Nhỏ hơn ZIP đáng kể với hầu hết dữ liệu, có mã hóa AES-256 che được cả tên file lẫn nội dung. Người nhận cần phần mềm để mở — miễn phí, nhưng vẫn là thêm một bước.

RAR: gần như chắc chắn bạn không cần đến nó, và nếu cần thì chỉ WinRAR mới tạo được. Lý do được giải thích bên dưới, vì đây là câu hỏi mọi người mang đến nhiều nhất.

Vì sao tar.gz nén nhỏ hơn ZIP

Sự khác biệt nằm ở cấu trúc chứ không phải ở thuật toán nén tốt hơn. ZIP nén từng file riêng rẽ, nhờ vậy trình đọc có thể lấy một mục ra khỏi file nén lớn mà không đụng đến phần còn lại. File .tar.gz nén mọi thứ thành một luồng liên tục — tar nối các file lại với nhau, rồi gzip bọc toàn bộ kết quả.

Điều đó có nghĩa là tar đã nén có thể tận dụng sự lặp lại giữa các file, còn ZIP thì không. Với một thư mục gồm năm mươi file mã nguồn, tài liệu cấu hình hay file log tương tự nhau, chênh lệch là rất lớn. Với một thư mục ảnh không liên quan đến nhau thì gần như bằng không, vì không định dạng nào nén được dữ liệu đã nén sẵn.

Cái giá phải trả nằm ở đầu kia. Vì lớp nén bọc lấy mọi thứ, file .tar.gz không có mục lục: muốn liệt kê nội dung phải giải nén từ đầu, muốn lấy file cuối cùng ra phải giải nén toàn bộ. ZIP thì liệt kê ngay lập tức dù lớn đến đâu. Cái nào tốt hơn hoàn toàn phụ thuộc vào việc file nén có được giải nén toàn bộ hay không — mà bản sao lưu hay bản phát hành mã nguồn thì luôn như vậy.

Cái gì nén được, cái gì không

Đây là điều hữu ích nhất cần biết, và nó đúng với mọi định dạng. File đã nén thì không nén thêm được nữa. JPEG, PNG, MP3, MP4, PDF và các file nén khác đã được loại bỏ phần lặp lại từ trước; chạy bất kỳ trình nén nào lên chúng cũng chỉ bớt được một phần nhỏ của một phần trăm mà lại tốn thời gian.

Vì vậy file ZIP chứa năm mươi tấm ảnh về cơ bản nặng đúng bằng năm mươi tấm ảnh, và đó là định dạng đang hoạt động đúng chứ không phải bị lỗi. Lý do để nén chúng là để gửi một file thay vì năm mươi. Văn bản, tài liệu, mã nguồn, bảng tính và ảnh chưa nén mới là nơi việc nén phát huy tác dụng — thường chỉ còn một phần ba hoặc ít hơn.

Hệ quả là chọn định dạng nén mạnh hơn cho một thư mục ảnh, video là công cốc. 7z sẽ vượt xa ZIP với mã nguồn nhưng gần như không hơn gì với một thư viện ảnh.

Vì sao không công cụ miễn phí nào tạo được RAR

RAR là định dạng độc quyền. RarLab cấp phép cho nó, WinRAR là phần mềm trả phí, và giấy phép của mã nguồn duy nhất có thể tạo file RAR cấm rõ ràng việc dùng nó để viết một trình nén tương thích. Không phải khuyến cáo — mà là cấm, bằng văn bản, như điều kiện cốt lõi để được tiếp cận.

Việc giải nén thì cố ý được đối xử khác. RarLab công bố mã nguồn unrar mà ai cũng được dùng để đọc định dạng này, vì thế 7-Zip, The Unarchiver, VLC và trang web này đều mở file RAR hoàn toàn hợp pháp. Mở thì được phép; tạo thì không. Sự bất cân xứng đó là lý do mọi trình nén bạn từng dùng đều giải nén được RAR, nhưng chỉ một phần mềm tạo được nó.

Vậy khi một website quảng cáo “Chuyển ZIP sang RAR”, chỉ có một trong ba khả năng. Nó đổi tên file .zip của bạn thành .rar, chỉ đánh lừa được danh sách file và không gì khác. Nó chạy một bản WinRAR có bản quyền trên máy chủ, nghĩa là file của bạn đã được gửi đến máy của người lạ. Hoặc nó chẳng làm gì cả sau một thanh tiến trình. Không có khả năng thứ tư.

Nếu một hệ thống thực sự bắt buộc đuôi file đó, hãy mua WinRAR. Với mọi thứ người ta thực sự cần ở RAR — nén mạnh, chia thành nhiều phần, mã hóa mạnh, bản ghi khôi phục — 7-Zip làm tốt hơn và miễn phí.

Mật khẩu, và loại cần tránh

ZIP có hai cơ chế mã hóa và sự khác biệt giữa chúng cực kỳ quan trọng. ZipCrypto nguyên bản đã bị phá — công cụ khôi phục bẻ khóa nó trong vài giây — nhưng vẫn là thứ mà một số lượng đáng ngạc nhiên các công cụ “đặt mật khẩu cho file ZIP” âm thầm sử dụng. ZIP với AES-256 thì an toàn, và là thứ 7-Zip và WinZip hiện nay tạo ra khi bạn yêu cầu mã hóa.

Ngay cả với mã hóa tốt vẫn còn một cái bẫy thứ hai. File ZIP mã hóa tiêu chuẩn để mục lục của nó đọc được, nên bất kỳ ai có file đều thấy chính xác bên trong có gì mà không cần mật khẩu. Tên tài liệu thường tiết lộ nhiều không kém nội dung. 7z có thể mã hóa cả phần tiêu đề, và tùy chọn đó rất đáng bật.

Trang web này hoàn toàn không cung cấp tính năng đặt mật khẩu cho file nén, và đó là cố ý: cung cấp cơ chế đã bị phá còn tệ hơn là không cung cấp gì, vì trông nó như thể đang bảo vệ. Để có một file nén thực sự riêng tư, hãy dùng 7-Zip với AES-256 và mã hóa tiêu đề.

Những gì tải xuống không thể khôi phục

Nên biết trước khi giải nén một bản phát hành mã nguồn hay bản sao lưu trong trình duyệt. Quyền truy cập Unix, chủ sở hữu và liên kết tượng trưng được ghi trong file tar nhưng không thể khôi phục qua một lần tải xuống — các file đến với quyền thông thường, nên một script thực thi sẽ không còn chạy được, và một symlink sẽ thành đúng cái file nhỏ mà nó thực chất là.

Để đọc một tài liệu hoặc lấy một tấm ảnh ra trên máy mà bạn không cài được gì, mở file ngay tại đây là hoàn toàn phù hợp. Để giải nén thứ bạn định build hoặc chạy, hãy dùng dòng lệnh — tar -xzf có sẵn trên mọi máy Mac và Linux, và trên Windows từ năm 2018.

Câu hỏi thường gặp

Vì sao file ZIP của tôi gần như không nhỏ đi?

Vì những gì bạn cho vào đã được nén sẵn — ảnh, nhạc, video hoặc PDF. Các định dạng đó đã tự loại bỏ phần lặp lại của mình, nên trình nén không còn gì để tìm. File nén vẫn hữu ích vì gộp nhiều file thành một.

Gửi file 7z cho người khác có ổn không?

Định dạng thì không vấn đề gì; câu hỏi là họ có mở được không. 7-Zip miễn phí trên Windows, còn The Unarchiver và Keka mở được trên macOS — nhưng đó vẫn là thêm một bước, và nếu người nhận không rành công nghệ thì ZIP giúp tránh hẳn cuộc trao đổi đó.

.tar, .tar.gz và .tgz khác nhau thế nào?

File .tar không nén — chỉ là các file được nối lại kèm siêu dữ liệu của chúng. File .tar.gz là thứ đó được nén bằng gzip, còn .tgz là cùng một thứ với tên ngắn hơn cho những hệ thống không ưa hai dấu chấm. Ngoài ra còn có .tar.bz2 và .tar.xz, nén mạnh hơn và chậm hơn.

Tôi có mở được file RAR mà không cần WinRAR không?

Có, rất dễ. 7-Zip, The Unarchiver, Keka và cả VLC đều đọc được file RAR, trang web này cũng vậy. Chỉ có việc tạo file RAR là bị hạn chế.

File ZIP có mật khẩu có thực sự an toàn không?

Với AES-256 thì có, kèm lưu ý là tên file vẫn đọc được trừ khi bạn dùng định dạng mã hóa cả phần tiêu đề. Với ZipCrypto kiểu cũ — vẫn được một số công cụ dùng mà không nói ra — thì không; hãy coi nó là một rào cản chứ không phải sự bảo vệ.