Website được thiết kế tối ưu cho thành viên chính thức. Hãy Đăng nhập hoặc Đăng ký để truy cập đầy đủ nội dung và chức năng. Nội dung bạn cần không thấy trên website, có thể do bạn chưa đăng nhập. Nếu là thành viên của website, bạn cũng có thể yêu cầu trong nhóm Zalo "CNTT" các nội dung bạn quan tâm.

Dùng tar để nén và giải nén folder dung lượng lớn (vài trăm GB)

ICT

Trong môi trường máy chủ (Linux server), việc sao lưu, di chuyển hoặc lưu trữ các thư mục có dung lượng vài trăm GB (backup website, dữ liệu bệnh viện, PACS, log, archive…) là nhu cầu thường xuyên. Công cụ tar là lựa chọn chuẩn mực vì ổn định, hiệu quả và kiểm soát tốt.

Bài viết này trình bày đúng cách dùng tar để nén – chia nhỏ – ghép – giải nén dữ liệu dung lượng lớn một cách an toàn.


1. Vì sao nên dùng tar cho dữ liệu rất lớn?

So với zip hoặc các công cụ đồ họa, tar có các ưu điểm:

  • Hoạt động tốt với file/folder rất lớn (100–500GB+)

  • Giữ nguyên cấu trúc thư mục, permission, owner

  • Kết hợp linh hoạt với gzip, zstd, xz

  • Dễ chia nhỏ file để truyền qua mạng

  • Phù hợp với server không có GUI

👉 tar gần như là chuẩn công nghiệp cho backup và migration trên Linux.


2. Nén folder dung lượng lớn bằng tar

2.1. Nén cơ bản (không chia nhỏ)

 
tar -czf public_html.tar.gz /var/www/public_html

Giải thích:

  • -c : create (tạo archive)

  • -z : gzip compression

  • -f : chỉ định file output

⚠️ Không khuyến nghị khi file > 50–100GB vì:

  • Khó truyền

  • Dễ lỗi khi mạng rớt

  • Khó resume


3. Nén và chia nhỏ file tar (khuyến nghị cho vài trăm GB)

3.1. Nén + chia nhỏ 5GB mỗi file

tar -czf - /var/www/public_html \
| split -b 5G - public_html.tar.gz.part_
 

Kết quả:

public_html.tar.gz.part_aa
public_html.tar.gz.part_ab
public_html.tar.gz.part_ac
...

Ưu điểm:

  • Dễ rsync / scp

  • Resume tốt

  • Phù hợp backup dài hạn

📌 Đây là cách chuẩn khi backup dữ liệu lớn trên server.


4. Truyền dữ liệu sang máy khác (gợi ý)

rsync -avh --progress public_html.tar.gz.part_* user@server:/path/

Hoặc chạy trong tmux để tránh mất kết nối SSH. Sử dụng tmux rất quan trọng khi tiến trình cần thời gian lâu.

Tham khảo Hướng dẫn sử dụng tmux trên Linux (Quản trị server không sợ mất SSH)


5. Ghép lại các file tar đã chia nhỏ

Sau khi copy đầy đủ các file .part_*:

cat public_html.tar.gz.part_* > public_html.tar.gz

⏳ Lệnh này mất thời gian, không hiện progress.

Kiểm tra file tar có hợp lệ không (rất quan trọng)

tar -tzf public_html.tar.gz > /dev/null
  • Không lỗi → OK

  • Có lỗi → không nên giải nén, cần xử lý lại file nguồn


6. Giải nén folder dung lượng lớn

6.1. Giải nén tại thư mục hiện tại

tar -xzf public_html.tar.gz

6.2. Giải nén vào thư mục chỉ định

tar -xzf public_html.tar.gz -C /mnt/data/

7. Giải nén an toàn cho dữ liệu rất lớn

7.1. Chạy trong tmux (khuyến nghị)

tmux new -s extract_large_data
tar -xzf public_html.tar.gz

Thoát tmux:

Ctrl + B → D Windows, Mac có thể không nhận phím tắt
Hoặc gõ ngay
tmux detach
 
👉 Dữ liệu vẫn giải nén dù SSH bị mất.

8. Giữ nguyên owner và permission (quan trọng với web/server)

Nếu giải nén với quyền root:

tar -xzf public_html.tar.gz --same-owner --preserve-permissions

9. Xóa file trung gian sau khi hoàn tất

⚠️ Chỉ xóa khi đã kiểm tra dữ liệu OK

 
rm -f public_html.tar.gz.part_*
rm -f public_html.tar.gz

10. Một số lưu ý quan trọng khi làm việc với vài trăm GB

  • Luôn kiểm tra disk trống trước:

    df -h
  • Tránh chạy trên partition gần đầy

  • Không giải nén trên filesystem chậm (NFS yếu)

  • Ưu tiên chạy ngoài giờ cao điểm

  • Với dữ liệu cực lớn (>1TB): cân nhắc zstd thay gzip


Kết luận

tar không chỉ là công cụ nén đơn thuần mà là xương sống của backup và migration trên Linux.
Khi làm việc với dữ liệu vài trăm GB, quy trình chuẩn là:

tar → split → rsync → cat → tar -x

Áp dụng đúng quy trình giúp:

  • An toàn dữ liệu

  • Dễ phục hồi

  • Tránh rủi ro gián đoạn hệ thống