Cách Nén và Giải Nén Tập Tin trên Ubuntu (zip, tar.gz, tar.xz) — Lệnh, Giao Diện Đồ Họa và Xử Lý Sự Cố

final answer.## 1. Kiến thức cơ bản về nén và giải nén trên Ubuntu

Mục đích chính của việc thực hiện “nén” trên Ubuntu bao gồm ba mục sau:

  • Giảm kích thước tệp để tiết kiệm không gian lưu trữ
  • Gộp nhiều tệp thành một tệp để gửi và chia sẻ
  • Tạo bản sao lưu và lưu trữ (một bộ gói để lưu trữ)

Trên Ubuntu, thao tác dòng lệnh (Terminal) là tiêu chuẩn. Bạn cũng có thể thực hiện qua giao diện GUI (trình quản lý tệp), nhưng trong môi trường làm việc thực tế và máy chủ, việc sử dụng dòng lệnh là chuẩn mực.

Điểm quan trọng đầu tiên bạn cần hiểu là “nén” và “lưu trữ” là hai khái niệm khác nhau.

目次

1.1 Sự khác biệt giữa Nén và Lưu trữ

Đây là điểm mà hầu hết người mới bắt đầu cảm thấy bối rối.

  • Compression → Quá trình giảm kích thước dữ liệu Ví dụ: gzip, bzip2, xz
  • Archive → Quá trình gộp nhiều tệp và thư mục thành một tệp duy nhất Ví dụ: tar

Một sự thật quan trọng

Lệnh tar không phải là “nén.”
Nói một cách chính xác, nó là lệnh chỉ “gộp”.

Nếu bạn muốn nén đồng thời, bạn kết hợp nó với gzip hoặc xz.

Ví dụ:

tar -czvf archive.tar.gz folder/

Ý nghĩa:

  • c = tạo
  • z = nén gzip
  • v = hiển thị chi tiết (hiển thị các mục đã xử lý)
  • f = chỉ định tên tệp đầu ra

1.2 Các định dạng nén phổ biến trên Ubuntu

Các định dạng sau thường được sử dụng trên Ubuntu.

FormatFeaturesMain use
zipHigh Windows compatibilitySharing with other OSes
tar.gzLinux standard formatGeneral-purpose compression
tar.bz2Higher compression than gzipPrioritize smaller size
tar.xzVery high compressionLarge datasets

Cách chọn

  • Chia sẻ với Windows → zip
  • Giữ trong Linux → tar.gz
  • Kích thước là ưu tiên hàng đầu → tar.xz

1.3 Các lệnh cơ bản để kiểm tra trước khi nén

Kiểm tra thư mục hiện tại:

pwd

Liệt kê các tệp:

ls -l

Kiểm tra kích thước:

du -sh folder/

Các điểm thường gặp

  • Chạy lệnh mà không kiểm tra thư mục hiện tại và tạo tệp ở vị trí không mong muốn
  • Gõ sai đường dẫn tương đối (ví dụ, ../folder )
  • Bỏ qua việc kiểm tra kích thước trước khi nén và hết dung lượng đĩa

1.4 Những hiểu lầm phổ biến và lưu ý

1. Hình ảnh và video không giảm nhiều

Bởi vì JPEG và MP4 đã là các định dạng nén, kích thước của chúng thường không giảm đáng kể.

2. tar một mình không giảm kích thước

Phần sau chỉ “gộp”.

tar -cvf archive.tar folder/

Kích thước sẽ gần như không thay đổi.

3. Tệp lớn làm tăng tải CPU

Việc sử dụng CPU có thể tăng cao, đặc biệt khi dùng xz.

4. Cẩn thận với lỗi quyền truy cập

Nếu bạn thao tác với các thư mục hệ thống, bạn sẽ cần sudo.

2. Cách nén và giải nén định dạng zip trên Ubuntu

Định dạng zip cung cấp khả năng tương thích tốt nhất khi trao đổi tệp giữa Ubuntu và Windows.
Nhiều người dùng tìm kiếm “ubuntu compression” thường muốn zip trước tiên.

Trên Ubuntu, bạn sử dụng các lệnh zipunzip.
Đầu tiên, kiểm tra xem chúng đã được cài đặt chưa.

2.1 Kiểm tra xem zip đã được cài đặt chưa

Bạn có thể kiểm tra bằng lệnh sau:

zip -v

Nếu nhận được lỗi, hãy cài đặt:

sudo apt update
sudo apt install zip unzip

Những lỗi thường gặp

  • Không thể giải nén vì unzip chưa được cài đặt
  • Quên dùng sudo và nhận “Permission denied”

2.2 Cách nén tệp bằng zip

Nén một tệp đơn:

zip sample.zip file.txt

Kết quả:

  • Đã tạo sample.zip
  • Tệp gốc không bị xóa

Nén nhiều tệp cùng lúc

zip sample.zip file1.txt file2.txt

2.3 Cách nén một thư mục (Quan trọng)

Khi nén một thư mục, tùy chọn -r (đệ quy) là bắt buộc.

zip -r sample.zip folder/

Nếu bỏ qua -r, các tệp bên trong thư mục sẽ không được nén.

Các điểm thường gặp

  • Quên -r
  • Gõ sai đường dẫn tương đối
  • Sắp xếp lệnh sai thứ tự (tên tệp đầu ra phải đứng trước)

Thứ tự đúng:

zip -r output.zip target_folder

2.4 Cách giải nén tệp zip

Lệnh cơ bản:

unzip sample.zip

Giải nén vào một thư mục chỉ định:

unzip sample.zip -d extracted_folder

Ghi chú

  • Nếu đích đã tồn tại, bạn sẽ được nhắc xác nhận ghi đè
  • Nếu các tệp có cùng tên tồn tại, chúng có thể bị ghi đè
  • Nếu đường dẫn chứa khoảng trắng, hãy bọc nó trong dấu ngoặc kép

Ví dụ:

unzip "sample file.zip"

2.5 Tạo zip được bảo vệ bằng mật khẩu

Bạn có thể mã hóa nó vì mục đích bảo mật.

zip -e secure.zip file.txt

Bạn sẽ được nhắc nhập mật khẩu.

Ghi chú

  • Mã hóa zip không mạnh lắm (không phù hợp cho sử dụng bảo mật cao)
  • Mất mật khẩu = khó khôi phục

2.6 Kiểm tra Kích thước và Tỷ lệ Nén

Hiển thị thông tin tệp zip:

unzip -l sample.zip

So sánh với kích thước gốc:

ls -lh

Tại sao Tỷ lệ Nén Có Thể Thấp

  • Hình ảnh/video đã được nén rồi
  • Văn bản và nhật ký thường nén tốt

3. Cách Nén với tar.gz (tgz) (Tiêu chuẩn Linux)

Định dạng được sử dụng phổ biến nhất trong môi trường Linux là tar.gz.
Nó được sử dụng rộng rãi trên Ubuntu cho phân phối mã nguồn và sao lưu.

tar.gz là quy trình hai bước:

  1. Gộp tệp với tar (lưu trữ)
  2. Nén với gzip

Hiểu cơ chế này làm cho việc sử dụng nâng cao dễ dàng hơn.

3.1 Lệnh Cơ bản để Tạo Lưu trữ tar.gz

Ví dụ: nén một thư mục

tar -czvf archive.tar.gz folder/

Ý nghĩa của từng tùy chọn:

  • c = tạo
  • z = nén gzip
  • v = verbose (hiển thị các mục đã xử lý)
  • f = tệp (chỉ định tên tệp đầu ra)

Tệp Đơn

tar -czvf archive.tar.gz file.txt

Nhiều Tệp

tar -czvf archive.tar.gz file1.txt file2.txt

3.2 Cách Giải nén Lưu trữ tar.gz

Lệnh cơ bản:

tar -xzvf archive.tar.gz

Phân tích tùy chọn:

  • x = giải nén
  • z = giải nén gzip
  • v = hiển thị các mục đã giải nén
  • f = chỉ định tệp

Giải nén vào Thư mục Cụ thể

tar -xzvf archive.tar.gz -C target_folder/

-C chỉ định thư mục đích.

3.3 Ghi chú Quan trọng Khi Sử dụng tar

1. Theo dõi Cấu trúc Đường dẫn Đã Giải nén

Cấu trúc thư mục tại thời điểm tạo được bảo tồn trong quá trình giải nén.

Ví dụ:

tar -czvf archive.tar.gz folder/

Khi giải nén:

folder/
  └─ contents

Nếu bạn muốn “chỉ giải nén nội dung,” bạn cần điều chỉnh đường dẫn khi tạo lưu trữ.

2. Cẩn thận Với Việc Ghi đè Ngẫu nhiên

Nếu tệp đã tồn tại, chúng có thể bị ghi đè.
Để kiểm tra trước:

tar -tzvf archive.tar.gz

-t liệt kê nội dung lưu trữ.

3. Không Đủ Không gian Đĩa

Nén có thể tạm thời sử dụng thêm không gian.
Kiểm tra trước:

df -h

3.4 Chỉ Nén với gzip

Chỉ nén một tệp:

gzip file.txt

Kết quả:

file.txt.gz

Giải nén:

gunzip file.txt.gz

Ghi chú

  • gzip xóa tệp gốc (nó thay thế sau khi nén)
  • Không phù hợp để gộp nhiều tệp

3.5 Lỗi Phổ biến

  • Trộn lẫn thứ tự tùy chọn
  • Quên đặt tên tệp sau f
  • Đặt -C ở vị trí sai
  • Hiểu lầm rằng tar đơn lẻ giảm kích thước

4. Chọn Định dạng Nén Cao (bz2 / xz)

Nếu bạn muốn giảm kích thước càng nhiều càng tốt, sử dụng bzip2 (bz2) hoặc xz, chúng thường nén tốt hơn gzip.
Tuy nhiên, tỷ lệ nén càng cao, tải CPU càng cao và thời gian xử lý càng dài.

Hướng dẫn cơ bản như sau:

  • Ưu tiên tốc độ → gzip
  • Ưu tiên tỷ lệ nén → xz
  • Trung bình → bzip2

4.1 Tạo và Giải nén tar.bz2

Cách Nén

tar -cjvf archive.tar.bz2 folder/

Phân tích tùy chọn:

  • c = tạo
  • j = nén bzip2
  • v = đầu ra verbose
  • f = chỉ định đầu ra

Cách Giải nén

tar -xjvf archive.tar.bz2

4.2 Tạo và Giải nén tar.xz

xz hiện là một trong những định dạng nén cao nhất trên Linux.

Cách Nén

tar -cJvf archive.tar.xz folder/

Lưu ý: J phải viết hoa (quan trọng).

Cách Giải Nén

tar -xJvf archive.tar.xz

4.3 Sự Khác Biệt về Tỷ Lệ Nén và Thời Gian Xử Lý

Xu hướng chung (có thể thay đổi tùy môi trường):

  • gzip → nhanh, tỷ lệ nén tiêu chuẩn
  • bzip2 → nén cao hơn gzip, chậm hơn một chút
  • xz → nén rất cao, chậm nhất

Kiểm Tra Tải CPU

top

Việc sử dụng CPU tăng lên khi nén các tệp lớn bằng xz là bình thường.

4.4 Cách Lựa Chọn trong Công Việc Thực Tế

Đối Với Sao Lưu

→ tar.xz (ưu tiên kích thước nhỏ hơn)

Đối Với Lưu Trữ Log Máy Chủ

→ tar.gz (cân bằng)

Đối Với Việc Chuyển Tệp Tạm Thời

→ tar.gz hoặc zip

4.5 Những Sai Lầm Thường Gặp và Lưu Ý

  • J thường và gặp lỗi
  • xz không được cài đặt trên môi trường cũ
  • Máy chủ chậm do tải CPU
  • Hết dung lượng trong quá trình nén

Nếu xz chưa được cài đặt:

sudo apt install xz-utils

5. Cách Nén Sử Dụng Giao Diện Đồ Họa (Trình Quản Lý Tập Tin)

Nếu bạn không quen với các thao tác dòng lệnh, bạn có thể nén bằng trình quản lý tệp của Ubuntu (thường là “Files” = Nautilus).
Trong môi trường desktop, đây là cách dễ nhất.

5.1 Các Bước Nén Bằng Click Chuột Phải

Các Bước

  1. Chọn tệp hoặc thư mục bạn muốn nén
  2. Click chuột phải
  3. Chọn “Compress”
  4. Chọn định dạng wp:list /wp:list
    • .zip
    • .tar.xz
    • .7z (may appear depending on the environment)
  5. Nhấn “Create”

Tệp nén sẽ được tạo trong cùng thư mục.

5.2 Cách Giải Nén

Các Bước

  1. Click chuột phải vào tệp nén
  2. Chọn “Extract Here” hoặc “Extract To…”
  3. Hoàn tất giải nén

5.3 Kiểm Tra Khi Không Thể Sử Dụng Giao Diện Đồ Họa

Trong môi trường cài đặt tối thiểu hoặc Ubuntu Server, giao diện đồ họa không khả dụng.
Trong trường hợp đó, bạn phải sử dụng các thao tác dòng lệnh.

Kiểm tra môi trường desktop:

echo $XDG_CURRENT_DESKTOP

Nếu không có gì hiển thị, có thể bạn không có môi trường GUI.

5.4 Lưu Ý Khi Sử Dụng Giao Diện Đồ Họa

1. Xử Lý Có Thể Chậm Khi Nhiều Tệp

Chỉ báo tiến độ có thể khó hiểu.

2. Không Thể Chỉ Định Mức Nén Chi Tiết

Bạn không thể đặt mức gzip trong giao diện.

3. Khó Nhìn Thấy Mức Sử Dụng CPU

Nếu PC chậm trong quá trình xử lý, có thể khó hiểu nguyên nhân.

4. Không Thích Hợp cho Máy Chủ

Không khả dụng trong môi trường dựa trên SSH.

5.5 Sai Lầm Thường Gặp

  • Chọn định dạng nén mà không hiểu sự khác nhau
  • Không kiểm tra đích và “mất” các tệp đã giải nén
  • Ghi đè lên các tệp đã tồn tại

6. Kỹ Thuật Nén Thực Tiễn cho Công Việc Thực Tế

Ở đây chúng tôi giải thích các kỹ thuật thường gặp trong công việc thực tế và vận hành máy chủ, vượt ra ngoài nén/giải nén đơn giản.
Các kỹ thuật này bao gồm loại trừ log, nén chỉ các phần mở rộng cụ thể, và zip có mật khẩu—các thao tác rất thực tiễn.

6.1 Nén Chỉ Các Phần Mở Rộng Tập Tin Cụ Thể

Ví dụ: nén chỉ các tệp log

tar -czvf logs.tar.gz *.log

Lưu Ý

  • * (ký tự đại diện) được shell mở rộng tự động
  • Chỉ áp dụng cho các tệp trong thư mục hiện tại
  • Các thư mục con không được bao gồm

Để bao gồm cả các thư mục con:

find . -name "*.log" -print0 | tar --null -czvf logs.tar.gz --files-from=-

6.2 Loại Trừ Các Tệp Cụ Thể Khi Nén

Ví dụ: loại trừ các tệp .log

tar --exclude="*.log" -czvf archive.tar.gz folder/

Loại trừ nhiều mẫu:

tar --exclude="*.log" --exclude="*.tmp" -czvf archive.tar.gz folder/

Sai Lầm Thường Gặp

  • Bỏ qua dấu ngoặc kép khiến ký tự đại diện được mở rộng
  • Gõ sai đường dẫn loại trừ

6.3 Chỉ Định Mức Nén (gzip)

gzip cho phép chỉ định mức nén (1–9).

gzip -9 file.txt
  • 1 = nhanh, nén thấp
  • 9 = chậm, nén cao

Khi chỉ định qua tar:

.“` tar -czvf archive.tar.gz folder/ –gzip -9

Lưu ý: cú pháp có thể khác nhau tùy vào môi trường.

### 6.4 Tạo file zip được bảo vệ bằng mật khẩu

zip -e secure.zip file.txt

Để buộc mã hoá:

zip -P password secure.zip file.txt

#### Lưu ý

* `-P` không được khuyến nghị vì nó vẫn còn trong lịch sử shell
* mã hoá zip không mạnh lắm (không phù hợp cho việc sử dụng bảo mật cao)

### 6.5 Chia nhỏ các archive (cho tệp lớn)

Để chia một archive lớn:

zip -r -s 100m split.zip folder/

Nó sẽ được chia thành các phần 100MB.

#### Ghi chú

* Tất cả các phần đã chia đều cần thiết để giải nén
* Nếu bất kỳ phần nào bị thiếu/hỏng, không thể khôi phục

### 6.6 So sánh kích thước Trước và Sau khi Nén

Trước khi nén:

du -sh folder/

Sau khi nén:

ls -lh archive.tar.gz

Các nguyên nhân phổ biến gây tỷ lệ nén thấp:

* Dữ liệu đã được nén sẵn như hình ảnh/video
* Dữ liệu đã được mã hoá nén kém

## 7. Các lỗi thường gặp khi nén và cách khắc phục

Khi nén/giải nén trên Ubuntu, người mới thường gặp các lỗi phổ biến.  
Dưới đây là các lỗi tiêu biểu và giải pháp cụ thể.

### 7.1 Lỗi “command not found”

Ví dụ:

zip: command not found

#### Nguyên nhân

Lệnh chưa được cài đặt.

#### Giải pháp

sudo apt update sudo apt install zip unzip

Đối với các công cụ liên quan đến tar:

sudo apt install xz-utils

### 7.2 “Permission denied”

Ví dụ:

tar: folder/file.txt: Cannot open: Permission denied

#### Nguyên nhân

Quyền không đủ để truy cập tệp hoặc thư mục.

#### Giải pháp

Kiểm tra quyền sở hữu:

ls -l

Sử dụng sudo:

sudo tar -czvf archive.tar.gz folder/

#### Lưu ý

Sử dụng sudo quá mức sẽ tăng rủi ro bảo mật.

### 7.3 “No space left on device”

Ví dụ:

No space left on device

#### Nguyên nhân

Không đủ dung lượng đĩa.

#### Cách kiểm tra

df -h

Xóa các tệp không cần thiết:

sudo apt clean

Kiểm tra việc sử dụng đĩa:

du -sh *

### 7.4 Tên tệp bị lỗi khi giải nén

Điều này có thể xảy ra khi bạn nhận một file zip được tạo trên Windows.

#### Nguyên nhân

Sự khác nhau về mã ký tự (UTF-8 vs Shift-JIS, v.v.).

#### Ví dụ sửa lỗi

unzip -O cp932 sample.zip

Lưu ý: tùy môi trường.

### 7.5 Ghi đè vô tình

Các tệp hiện có có thể bị ghi đè khi giải nén.

Kiểm tra trước:

tar -tzvf archive.tar.gz

Đối với zip:

unzip -l sample.zip

### 7.6 Tải CPU cao

Việc sử dụng CPU tăng lên trong quá trình nén xz là bình thường.

Kiểm tra:

top

Nếu cần, giảm mức nén, hoặc chuyển sang gzip.

## 8. Tóm tắt: Lệnh nén Ubuntu nào nên dùng (Tham khảo nhanh)

Dưới đây là bản tóm tắt thực tế, dựa trên các trường hợp sử dụng của những gì chúng ta đã đề cập.  
Điều này giúp người dùng tìm kiếm “ubuntu compression” nhanh chóng đưa ra kết luận.

### 8.1 Định dạng đề xuất theo trường hợp sử dụng

Use caseRecommended formatReason
Sharing with WindowszipHigh compatibility
Standard use within Linuxtar.gzGood balance
Size is the top prioritytar.xzHigh compression
Backup storagetar.gz / tar.xzPrioritize stability
Temporary transfertar.gzPrioritize speed
### 8.2 So sánh định dạng (Tốc độ vs Tỷ lệ nén)
FormatCompression ratioSpeedCPU load
zipNormalFastLow
tar.gzNormalFastLow to medium
tar.bz2HighSlowMedium
tar.xzVery highVery slowHigh
Lưu ý: tỷ lệ nén và tốc độ thay đổi tùy vào dữ liệu và môi trường. ### 8.3 Các lệnh tối thiểu bạn nên ghi nhớ #### Nén zip

zip -r archive.zip folder/

#### Nén tar.gz

tar -czvf archive.tar.gz folder/

#### Giải nén tar.gz

tar -xzvf archive.tar.gz “`

8.4 Kết luận đơn giản cho người mới bắt đầu

  • Nếu không chắc, hãy dùng tar.gz
  • Nếu cần chia sẻ với Windows, hãy dùng zip
  • Nếu muốn kích thước nhỏ nhất có thể, hãy dùng tar.xz

Ưu tiên hàng đầu của bạn là ghi nhớ tar -czvftar -xzvf.

8.5 Các lựa chọn sai thường gặp

  • Hiểu lầm rằng tar tự nó có thể nén
  • Luôn chọn xz và làm chậm quá trình
  • Không hiểu sự khác biệt giữa GUI và CLI
  • Không kiểm tra dung lượng đĩa trước khi nén