Khi ổ cứng server web đầy nhưng bạn vẫn cần backup gấp, lệnh kết hợp tar và SSH sẽ giúp nén và đẩy dữ liệu trực tiếp sang server khác mà không tốn thêm dung lượng lưu trữ tạm. Đây là giải pháp khẩn cấp hữu hiệu cho lúc “cạn kiệt” tài nguyên.

Tình huống khẩn cấp khi server hết dung lượng?
Đối với bất kỳ người quản trị hệ thống, developer hay freelancer làm về web, tình huống server hết ổ dung lượng ổ cứng là một ác mộng thực tế. Khi đó, website chạy chậm, các quy trình tự động bị dừng, và việc sao lưu dữ liệu trở thành khó khăn vô cùng. Thông thường, bạn sẽ cần tạo file nén (.zip, .tar.gz) rồi mới có thể di chuyển dữ liệu. Nhưng nếu không còn dung lượng trống, ngay cả việc tạo file nén cũng bất khả thi.
Vấn đề này thường xảy ra khi ứng dụng phát sinh dữ liệu log lớn, cache tích tụ, hoặc khách hàng tải lên quá nhiều file. Bạn không thể xoá trước vì cần backup toàn bộ dữ liệu cũ. Chính vì vậy, bạn cần một mẹo không chiếm thêm không gian trên server chính.
Nguyên lý hoạt động của phương pháp nén và truyền trực tiếp?
Thay vì tạo file backup tạm trên chính server đang chứa website, bạn có thể kết hợp hai lệnh Linux mạnh mẽ: tar để nén và SSH để truyền dữ liệu. Cách này cho phép bạn nén dữ liệu từng mảnh nhỏ rồi đẩy ngay sang server khác qua đường truyền mạng, không bao giờ lưu toàn bộ file nén trên server gốc.
Lệnh cơ bản như sau:
tar czvf - /home/user/public_html | ssh user@server-backup "cat > /opt/website_backup.tar.gz"
Dấu gạch ngang (-) sau tar czvf là chìa khóa. Nó có ý nghĩa “ghi dữ liệu nén ra luồng xuất tiêu chuẩn” (stdout) thay vì lưu vào file cụ thể. Dấu pipe (|) sẽ chuyển luồng xuất này trực tiếp sang lệnh SSH, từ đó ghi vào file trên server backup. Như vậy, server gốc chỉ cần bộ nhớ đệm tạm để xử lý dữ liệu, không phải lưu toàn bộ file backup.

Cách phân tích từng thành phần của lệnh?
Để hiểu rõ hơn, hãy chia nhỏ lệnh thành các phần:
tar czvf –: Đây là phần nén dữ liệu. Tham số c tạo archive, z dùng gzip nén, v hiển thị chi tiết, f chỉ định file output, và dấu – xuất ra stdout.
/home/user/public_html: Đường dẫn thư mục cần backup. Bạn có thể thay đổi thành bất kỳ thư mục nào cần sao lưu.
| ssh user@server-backup: Pipe (|) chuyển luồng output từ tar sang lệnh SSH. Phần này kết nối tới server-backup với tài khoản user.
“cat > /opt/website_backup.tar.gz”: Trên server backup, lệnh cat sẽ nhận dữ liệu từ stdin (lúc này là output nén từ tar) và ghi vào file /opt/website_backup.tar.gz.
Kết quả cuối cùng: File backup hoàn chỉnh được lưu trên server khác, server gốc hoàn toàn không chiếm thêm không gian.
Ứng dụng thực tế cho các nhóm chuyên môn?
Phương pháp này không chỉ là mẹo nhỏ mà còn là kỹ năng quan trọng trong vận hành hệ thống, áp dụng cho nhiều đối tượng khác nhau.
Với lập trình viên và sysadmin: Kỹ năng này rất cần thiết khi server sắp hết ổ nhưng cần backup gấp để di dời hoặc rollback. Không cần dọn dẹp trước, bạn có thể lấy backup rồi mới xoá file cũ. Điều này giảm rủi ro mất dữ liệu và downtime.
Với freelancer và quản lý VPS: Khi quản lý nhiều hosting cho khách, tình huống server full là thường xuyên. Với lệnh này, bạn có thể giải quyết tình huống khẩn cấp mà không cần sợ mất dữ liệu hoặc phải mở rộng ổ tạm thời.
Với doanh nghiệp: Có thể tích hợp lệnh này vào script khẩn cấp, khi hệ thống monitoring phát hiện ổ cứng sắp đầy thì tự động kích hoạt backup và đẩy sang server dự phòng. Điều này hỗ trợ di dời hệ thống sang hạ tầng mới mà không cần dừng dịch vụ.
Xem thêm: Latency Ổ Đĩa: Lý Do Web Chậm Dù CPU/RAM Khỏe
Bảng so sánh các phương pháp backup khi server hết dung lượng?
| Phương pháp | Yêu cầu dung lượng trên server gốc | Tốc độ | Độ phức tạp | Ưu điểm |
|---|---|---|---|---|
| Tạo file .zip/.tar.gz rồi tải về | Cần đủ dung lượng lưu file | Chậm (phải đợi tạo file) | Dễ | Đơn giản, quen thuộc |
| Nén trực tiếp và đẩy qua SSH | Chỉ cần bộ nhớ đệm tạm | Nhanh (truyền trong khi nén) | Trung bình | Không tốn dung lượng, tự động hóa được |
| Dùng rsync để đồng bộ | Rất ít (chỉ khác biệt) | Rất nhanh (sao chép tăng dần) | Trung bình | Linh hoạt, có thể chạy định kỳ |
| Mở rộng ổ cứng rồi backup thông thường | Cần thêm nhiều dung lượng | Chậm (phải chờ mở rộng) | Khó (yêu cầu kỹ năng) | An toàn, thường xuyên |
Các bước thực hiện chi tiết từng bước?
Bước 1: Kiểm tra kết nối SSH. Trước tiên, đảm bảo bạn có quyền SSH vào server backup và tài khoản có quyền ghi vào thư mục đích. Bạn có thể test bằng lệnh: ssh user@server-backup "ls -la /opt/"
Bước 2: Xác nhận đường dẫn nguồn. Kiểm tra thư mục cần backup có tồn tại và dung lượng xấp xỉ bao nhiêu: du -sh /home/user/public_html
Bước 3: Kiểm tra dung lượng server backup. Đảm bảo server backup có đủ không gian lưu trữ: ssh user@server-backup "df -h /opt/"
Bước 4: Chạy lệnh backup. Thực thi lệnh kết hợp tar và SSH. Quá trình sẽ mất thời gian tùy vào dung lượng dữ liệu và tốc độ kết nối mạng.
Bước 5: Xác minh backup. Sau khi lệnh hoàn thành, kiểm tra file trên server backup: ssh user@server-backup "ls -lh /opt/website_backup.tar.gz"
Các tối ưu hóa và lưu ý kỹ thuật quan trọng?
Sử dụng tham số -C để tránh đường dẫn tuyệt đối: Nếu bạn muốn file backup chứa cấu trúc thư mục tương đối thay vì tuyệt đối, dùng: tar czf - -C /home/user public_html | ssh user@server-backup "cat > /opt/website_backup.tar.gz"
Cấu hình SSH key cho tự động hóa: Nếu chạy lệnh thường xuyên hoặc tích hợp vào script, nên dùng SSH key thay vì password. Điều này vừa an toàn vừa không cần nhập mật khẩu mỗi lần.
Kiểm tra độ tin cậy mạng: Vì toàn bộ dữ liệu đi qua kết nối SSH, bạn nên chắc chắn rằng đường truyền mạng ổn định. Nếu ngắt kết nối giữa chừng, backup sẽ không hoàn toàn. Có thể thêm screen hoặc nohup để chạy ở background.
Cộng thêm thời gian và dung lượng: Thêm timestamp vào tên file để dễ quản lý: tar czvf - /home/user/public_html | ssh user@server-backup "cat > /opt/website_backup_$(date +%Y%m%d_%H%M%S).tar.gz"
Mã hóa backup trên đường truyền: SSH đã mã hóa mặc định, nhưng bạn có thể thêm lớp bảo vệ với GPG nếu cần.
Các lưu ý bảo mật khi sử dụng
Khi sử dụng phương pháp này, bảo mật là yếu tố quan trọng. Đảm bảo SSH key được bảo vệ tốt và chỉ những người được phép mới có quyền truy cập. Hạn chế quyền của tài khoản SSH trên server backup, chỉ cho phép ghi vào thư mục backup cụ thể.
Kiểm tra quy trình giám sát để phát hiện kỳ lạ. Nếu có backup đột ngột được tạo, điều đó có thể cho thấy server gốc đang gặp vấn đề. Luôn kiểm tra tính toàn vẹn của backup sau khi hoàn thành bằng cách trích xuất một vài file để xác minh.
Không nên dùng phương pháp này như giải pháp backup chiến lược dài hạn. Đây là cách khẩn cấp để xử lý tình huống cấp bách. Bạn vẫn cần có kế hoạch backup thường xuyên với các công cụ chuyên dụng như Bacula, Amanda, hoặc các dịch vụ cloud backup.
Các câu hỏi thường gặp
Làm sao để chắc chắn backup hoàn toàn?
Sau khi lệnh chạy xong, kiểm tra dung lượng file trên server backup và so sánh với dung lượng thư mục gốc. Thử trích xuất một vài file từ backup để xác minh không bị lỗi.
Nếu kết nối SSH bị ngắt giữa chừng thì sao?
Backup sẽ không hoàn toàn. Bạn cần chạy lại lệnh hoặc sử dụng rsync để đồng bộ chỉ những dữ liệu còn thiếu.
Có cần xoá dữ liệu trên server gốc sau khi backup?
Không. Hãy xác minh backup hoàn toàn trước. Sau đó, bạn có thể xoá từng phần để giải phóng dung lượng một cách an toàn.
Phương pháp này có an toàn khi backup dữ liệu nhạy cảm?
SSH mã hóa dữ liệu trên đường truyền. Tuy nhiên, bạn nên thêm GPG để mã hóa backup ở đích đến nếu cần bảo mật tối đa.
Có thể tối ưu tốc độ backup?
Bạn có thể dùng pigz (nén song song) thay vì gzip để nén nhanh hơn, hoặc điều chỉnh mức nén từ 1-9 tuỳ theo yêu cầu tốc độ và dung lượng.
Lệnh này có hoạt động trên Windows Server?
Không trực tiếp, vì tar và SSH là công cụ Linux/Unix. Tuy nhiên, Windows PowerShell hoặc WSL có thể hỗ trợ, hoặc bạn có thể sử dụng công cụ như 7-Zip với PuTTY trên Windows.
Xin chào, tôi là Nghĩa Võ: tốt nghiệp chuyên ngành phần cứng máy tính, là một blogger đam mê phần cứng PC và công việc hiện tại là kinh doanh và là nhà sáng lập của vonebuy
