TIP #15: tar + nc: Vừa nén vừa chuyển backup realtime

07/03/2020

Thông thường khi backup, mình sẽ dùng tar để nén thư mục, khi tar hoàn tất tạo ra file backup, mình sẽ chuyển backup đó sang server cần chuyển. Tuy nhiên, nếu dung lượng backup lớn (ví dụ 100GB), việc đợi nén xong rồi mới bắt đầu chuyển file nén sẽ tốn khá nhiều thời gian. Thay vào đó, ta có thể dùng trick sau để khi nén tới đâu sẽ chuyển file backup trực tiếp tới server mới một cách realtime, giúp tiết kiệm được ít nhất 50% thời gian cho các bạn.

1. Trên server cần backup dữ liệu:

$ tar -c backup/ | nc -l 9999

Lệnh này sẽ nén thư mục backup và chuyển output ra socket listen ở port 9999
2. Trên server cần lấy backup về

$ nc x.x.x.x 9999 > backup.tar.gz

Thay x.x.x.x bằng IP của server ở bước 1 (server1). Lệnh này sẽ kết nối vào socket ở server1 trên port 9999 và lấy kết quả ghi vào file backup.tar.gz trên server2. Khi server1 nén tới đâu, kết quả sẽ được ghi ra file backup.tar.gz theo thời gian thực. Server1 nén hoàn tất thì file backup cũng đã hoàn tất ở server2.