Hướng dẫn nén và giải nén các định dạng phổ biến trên Linux: ZIP, TAR, TAR.GZ, TAR.BZ2 – so sánh ưu/nhược, chọn lựa phù hợp.
So sánh nhanh
| Định dạng | Nén | Tốc độ | Tương thích | Dùng cho |
|---|---|---|---|---|
| ZIP | Trung bình | Nhanh | Mọi OS (Win/Mac/Linux) | Chia sẻ file cross-platform |
| TAR | Không nén (archive only) | Rất nhanh | Linux/Unix | Backup nhanh, tape, pipe stream |
| TAR.GZ (tgz) | Tốt (gzip) | Trung bình | Linux/Unix, Win (7zip) | Backup, phân phối source code – Khuyến khích #1 |
| TAR.BZ2 (tbz2) | Rất tốt (bzip2) | Chậm | Linux/Unix | Archive lưu trữ lâu dài, tiết kiệm dung lượng |
| TAR.XZ (txz) | Tốt nhất (LZMA2) | Rất chậm | Linux hiện đại | Phân phối package (Arch, Fedora), nén tối đa |
| TAR.ZST (zst) | Rất tốt, cực nhanh | Nhanh (multi-thread) | Linux kernel 5.1+ | Backup hiện đại, kernel, initramfs – Xu hướng mới |
ZIP
# Nén thư mục (recursive -r)
zip -r archive_name.zip directory_to_compress
# Giải nén
unzip archive_name.zip
# Giải nén vào thư mục chỉ định
unzip archive_name.zip -d /target/dir
# Xem nội dung không giải nén
unzip -l archive_name.zip
TAR (chỉ archive, không nén)
# Tạo archive
tar -cvf archive_name.tar directory_to_compress
# Giải nén
tar -xvf archive_name.tar
# Giải nén vào thư mục khác
tar -xvf archive_name.tar -C /tmp/extract_here/
c: create,x: extract,v: verbose,f: file.
TAR.GZ (Gzip)
# Nén
tar -czvf archive_name.tar.gz directory_to_compress
# Giải nén
tar -xzvf archive_name.tar.gz
# Giải nén thư mục khác
tar -xzvf archive_name.tar.gz -C /tmp/extract_here/
TAR.BZ2 (Bzip2)
# Nén
tar -cjvf archive_name.tar.bz2 directory_to_compress
# Giải nén
tar -xjvf archive_name.tar.bz2
# Giải nén thư mục khác
tar -xjvf archive_name.tar.bz2 -C /tmp/extract_here/
TAR.XZ (XZ/LZMA2) – Nén tốt nhất truyền thống
# Nén
tar -cJvf archive_name.tar.xz directory_to_compress
# Giải nén
tar -xJvf archive_name.tar.xz
TAR.ZST (Zstandard) – Hiện đại, nhanh, nén tốt
# Cài: apt/dnf/pacman install zstd
# Nén (multi-thread -T0 = tất cả core)
tar --zstd -cvf archive_name.tar.zst directory_to_compress
# Hoặc: tar -I zstd -cvf archive_name.tar.zst directory_to_compress
# Giải nén
tar --zstd -xvf archive_name.tar.zst
Mẹo hay
- Loại trừ tệp/thư mục:
tar --exclude='*.log' --exclude='node_modules' -czvf backup.tar.gz /path - Giữ quyền/owner (backup hệ thống):
tar -czvpf backup.tar.gz /path(p= preserve permissions). - Stream qua SSH (backup remote):
tar -czf - /path | ssh user@server "cat > backup.tar.gz" - Kiểm tra tính toàn vẹn:
tar -tvf archive.tar.gz(liệt kê),tar -tvf archive.tar.gz | wc -l(đếm file).
Chiến lược chọn định dạng
- Chia sẻ cho user Windows: ZIP.
- Backup server Linux hàng ngày: TAR.GZ hoặc TAR.ZST (cân bằng tốc độ/tỷ lệ).
- Archive lưu trữ lâu dài, ít truy cập: TAR.XZ hoặc TAR.ZST.
- Pipe/stream giữa server: TAR (không nén) hoặc TAR.ZST -T0.