Kỹ thuật nén và chuyển file backup real-time bằng tar nc là phương pháp sử dụng hai công cụ dòng lệnh phổ biến trong hệ điều hành Linux để nén dữ liệu và truyền trực tiếp giữa hai máy chủ mà không cần tạo ra file trung gian trên server nguồn. Trong bài viết này, mình sẽ hướng dẫn bạn cách thực hiện backup dữ liệu bằng tar và netcat chi tiết, nhanh chóng.
Những điểm chính
- Khái niệm tar nc: Là kỹ thuật kết hợp lệnh tar và nc để truyền dữ liệu trực tiếp qua mạng mà không cần tạo file trung gian.
- Tại sao nên sử dụng: Giúp giải quyết vấn đề “nút thắt cổ chai” bằng cách nén và truyền dữ liệu đồng thời, tiết kiệm thời gian và dung lượng ổ đĩa.
- Cảnh báo bảo mật quan trọng: Dữ liệu được truyền đi không mã hóa và không có cơ chế xác thực, tuyệt đối không dùng trên mạng không tin cậy.
- Khi nào nên sử dụng: Chỉ nên dùng trong các môi trường mạng nội bộ tin cậy, nơi tốc độ là ưu tiên hàng đầu và không có rủi ro về bảo mật.
- Cách nén và chuyển file: Quy trình gồm hai bước, bắt đầu bằng việc cho máy nhận lắng nghe trên một cổng, sau đó máy nguồn nén và gửi dữ liệu đến cổng đó, có thể thêm thanh tiến trình tùy nhu cầu sử dụng.
- Giải đáp thắc mắc thường gặp cho các vấn đề thực tiễn như so sánh với
scp, rủi ro bảo mật và cách theo dõi tiến trình backup.
Tar nc là gì?
tar nc là kỹ thuật phương pháp kết hợp hai công cụ dòng lệnh của Linux để truyền dữ liệu trực tiếp qua mạng mà không cần tạo file trung gian. Kỹ thuật này hoạt động bằng cách sử dụng tar để đóng gói một thư mục thành một luồng dữ liệu, sau đó dùng nc để gửi luồng dữ liệu đó qua một đường ống mạng (network pipe) đến máy nhận. Tại máy nhận, một lệnh nc khác sẽ lắng nghe và nhận luồng dữ liệu này, rồi đưa cho tar để giải nén.
- tar (Tape Archive): Đóng gói nhiều file và thư mục thành một luồng dữ liệu duy nhất.
- nc (netcat): Tạo một kết nối mạng TCP/UDP đơn giản để gửi và nhận dữ liệu thô .

Nút thắt cổ chai về thời gian khi backup dữ liệu lớn
Ví dụ, bạn cần backup một thư mục dung lượng 100GB. Quy trình chuẩn sẽ là:
- Dùng
tarđể nén thư mục. (Chờ 1 tiếng) - Sau khi có file nén, dùng
scphoặcrsyncđể chuyển nó qua server khác. (Chờ thêm 1 tiếng)
Tổng thời gian đợi quy trình hoàn tất có thể lên tới 2 tiếng bởi việc chuyển file chỉ được thực hiện sau khi đã nén xong, điều này gây nên một điểm nghẽn về thời gian và lãng phí đáng kể tài nguyên. Từ đó, kỹ thuật kết hợp tar và netcat (nc) ra đời cho phép bạn vừa nén vừa chuyển dữ liệu đồng thời, giúp giảm tổng thời gian xuống gần một nửa.
Như vậy, bạn nên kết hợp tar và netcat khi cần nén và truyền dữ liệu trực tiếp giữa hai máy tính qua mạng mà không muốn tạo file trung gian trên server nguồn, giúp tiết kiệm dung lượng, tăng tốc quá trình chuyển file, đặc biệt hữu ích khi server đầy bộ nhớ hoặc cần chuyển file lớn một cách nhanh gọn trong hệ thống nội bộ.

Cảnh báo bảo mật quan trọng
Trước khi sử dụng, bạn phải hiểu rõ những rủi ro bảo mật nghiêm trọng của phương pháp này. Tuyệt đối không sử dụng tar | nc trên các mạng không tin cậy như Internet hoặc Wifi công cộng.
- Không mã hóa: Toàn bộ dữ liệu được truyền đi ở dạng văn bản thuần túy (plaintext). Bất kỳ ai trên cùng mạng đều có thể nghe lén và xem được toàn bộ nội dung file của bạn.
- Không xác thực: netcat không có cơ chế xác thực. Bất kỳ máy tính nào trong mạng cũng có thể kết nối đến cổng đang lắng nghe và gửi hoặc nhận dữ liệu.

Khi nào nên sử dụng tar nc?
Phương pháp này chỉ thực sự an toàn và phát huy hiệu quả trong các môi trường được kiểm soát chặt chẽ:
- Mạng LAN nội bộ tin cậy: Truyền dữ liệu giữa các máy chủ trong cùng một trung tâm dữ liệu (ví dụ: kết nối trực tiếp giữa hai server trong cùng một rack, hoặc qua một VLAN backup riêng).
- Giữa các máy ảo: Sao chép dữ liệu giữa các máy ảo chạy trên cùng một máy chủ vật lý.
- Khi tốc độ là ưu tiên tuyệt đối: Do không tốn tài nguyên cho việc mã hóa, đây là một trong những cách truyền dữ liệu nhanh nhất.
Cách nén và chuyển file backup real-time bằng tar nc
Quy trình backup dữ liệu sẽ gồm 2 bước, nhưng logic sẽ là khởi động bên nhận trước, sau đó mới bắt đầu bên gửi.
Bước 1: Trên server đích (nơi nhận backup)
Đầu tiên, bạn mở một cửa sổ terminal và chạy lệnh sau để netcat lắng nghe kết nối trên một cổng bất kỳ (ví dụ: 9999):
# nc sẽ lắng nghe (-l) trên cổng 9999 và ghi mọi dữ liệu nhận được vào file backup.tar.gz
nc -l 9999 > backup.tar.gzBước 2: Trên server nguồn (nơi có dữ liệu cần backup)
Bây giờ, bạn hãy mở terminal trên server nguồn và thực thi lệnh sau:
# Nén thư mục 'backup/' bằng gzip (z), ghi ra stdout (f -)
# rồi đẩy qua netcat tới IP của server đích trên cổng 9999
tar czf - backup/ | nc <IP_SERVER_ĐÍCH> 9999Hãy chắc chắn rằng bạn đã thay <IP_SERVER_ĐÍCH> bằng địa chỉ IP thực tế của server ở Bước 1.
Phân tích lệnh:
tar czf - backup/: tar sẽ nén (c và z) thư mục backup/ và đẩy luồng dữ liệu đã nén ra stdout (f -).|: “Đường ống” quen thuộc sẽ hứng trọn luồng dữ liệu này.nc <IP_SERVER_ĐÍCH> 9999: netcat kết nối đến server đích và gửi toàn bộ dữ liệu nó nhận được từ tar qua kết nối đó.
Khi bạn nhấn Enter, tar bắt đầu nén, và nc bắt đầu gửi. Trên server đích, bạn sẽ thấy file backup.tar.gz được tạo ra và dung lượng tăng lên theo thời gian thực. Khi tar hoàn tất, kết nối sẽ tự động đóng, và file backup ở server đích cũng đã hoàn chỉnh.
Thêm thanh tiến trình (tùy chọn)
Bạn có thể cài đặt công cụ pv (Pipe Viewer) và chèn nó vào giữa để theo dõi tốc độ và tiến trình.
# Trên Server Nguồn
tar czf - backup/ | pv | nc <IP_SERVER_ĐÍCH> 9999Lệnh này sẽ hiển thị một thanh tiến trình, cho bạn biết chính xác có bao nhiêu dữ liệu đã được truyền và với tốc độ bao nhiêu.
Câu hỏi thường gặp
Khi server đầy bộ nhớ, có thể backup dữ liệu mà không tạo file tạm không?
Hoàn toàn có thể. Phương pháp dùng tar kết hợp SSH hoặc netcat sẽ truyền trực tiếp luồng dữ liệu nén sang máy chủ đích mà không ghi ra ổ cứng của server nguồn, phù hợp với tình huống bị giới hạn dung lượng.
Tar và netcat khác gì scp hay rsync khi backup dữ liệu trực tiếp giữa hai máy chủ?
tar kết hợp với netcat nén dữ liệu thành một luồng duy nhất để truyền, còn scp và rsync truyền từng tệp riêng lẻ qua mạng. scp sao chép toàn bộ tệp, còn rsync chỉ đồng bộ những dữ liệu thay đổi.
Có những rủi ro bảo mật nào khi truyền bằng netcat không?
Nếu truyền bằng netcat, dữ liệu sẽ không được mã hóa nên nguy cơ bị nghe lén tồn tại trên mạng không an toàn. Vì vậy bạn hãy dùng phương pháp này trong mạng LAN uy tín, còn backup qua SSH sẽ bảo mật hơn do dữ liệu được mã hóa trong lúc truyền tải.
Có thể kết hợp hiển thị thanh tiến trình khi truyền dữ liệu không?
Bạn hoàn toàn có thể cài công cụ pv (Pipe Viewer) để theo dõi tốc độ và tiến trình backup khi truyền dữ liệu, giúp kiểm soát tài nguyên thực tế trong quá trình backup file lớn.
Kỹ thuật nén và chuyển file backup real-time bằng tar nc mang lại tốc độ truyền tải vượt trội, đặc biệt phù hợp cho những môi trường mạng nội bộ an toàn và khi hiệu suất là yếu tố hàng đầu. Tuy nhiên, bạn cũng cần lưu ý các rủi ro rò rỉ dữ liệu khi sử dụng kỹ thuật này. Để tìm hiểu sâu hơn về cách quản lý hệ thống, bảo mật và các thủ thuật Linux khác, mời bạn tiếp tục theo dõi một số bài viết dưới đây:




