Liên hệProfile
Danh mục

Mục Lục

    Hướng dẫn backup file từ xa bằng tar SSH server đầy bộ nhớ

    Nguyễn Hưng

    Ngày đăng:

    30/10/2025

    Cập nhật lần cuối:

    30/10/2025

    Lượt xem:
    Chia sẻ
    Đánh giá
    Đánh giá bài viết

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    30/10/2025

    Cập nhật lần cuối:

    30/10/2025

    Mục lục

    Khi ổ cứng đầy, giải pháp tốt nhất là bạn nên kết hợp tar và ssh để tạo một pipepline truyền dữ liệu trực tiếp qua mạng mà không cần lưu trữ trung gian. Bài viết này sẽ hướng dẫn chi tiết từng bước thực hiện backup bằng tar SSH trong điều kiện tài nguyên hạn chế và những lưu ý trong quá trình thực hiện.

    Những điểm chính

    • Khái niệm lệnh tar: Là công cụ dòng lệnh trong Linux để gom nhiều file và thư mục thành một file lưu trữ duy nhất.
    • Khái niệm tar SSH: Là kỹ thuật kết hợp lệnh tar và ssh để truyền dữ liệu nén trực tiếp qua mạng mà không cần tạo file tạm.
    • Tại sao nên kết hợp tar và SSH: Giúp tiết kiệm dung lượng ổ đĩa, tăng tốc độ truyền file và đảm bảo an toàn dữ liệu qua kết nối mã hóa.
    • Khi nào nên sử dụng: Rất hữu ích trong các tình huống khẩn cấp như máy chủ bị đầy dung lượng, không thể tạo file backup tạm thời.
    • Hướng dẫn backup tệp từ xa: Quy trình bao gồm việc thiết lập xác thực bằng SSH key và sử dụng lệnh tar czf – [thư mục] | ssh [user@host] “cat > [file.tar.gz]”.
    • Cách khôi phục dữ liệu: Thực hiện quy trình ngược lại bằng cách đọc file backup từ máy chủ đích và giải nén trực tiếp trên máy chủ nguồn.
    • Lưu ý quan trọng: Cần đảm bảo cả hai máy chủ đều có tar và ssh, tài khoản người dùng có đủ quyền hạn và kết nối mạng ổn định.
    • Giải đáp một số thắc mắc thường gặp khi sử dụng tar SSH.

    Lệnh tar là gì?

    Lệnh tar là công cụ dòng lệnh trong Linux dùng để gom nhiều file và thư mục thành một file lưu trữ duy nhất, phục vụ mục đích nén, backup hoặc truyền tải dữ liệu. Lệnh tar hỗ trợ tạo, giải nén, liệt kê, cập nhật, và loại trừ các file trong archive, đồng thời kết hợp với gzip hoặc bzip2 để giảm kích thước file.​

    Lệnh tar là công cụ dòng lệnh trong Linux
    Lệnh tar là công cụ dòng lệnh trong Linux

    tar SSH là gì?

    Tar SSH là kỹ thuật kết hợp cho phép bạn truyền các tệp và thư mục trực tiếp qua mạng mà không cần tạo các tệp nén tạm thời trên máy chủ, bằng cách sử dụng ống dẫn (pipe). Phương pháp này đặc biệt hiệu quả và tiết kiệm dung lượng lưu trữ.

    Khái niệm tar SSH
    Khái niệm tar SSH

    Cơ chế hoạt động chính

    Cơ chế chính là sử dụng dấu gạch ngang (-) trong lệnh tar để chỉ định đầu vào hoặc đầu ra là stdout (đầu ra chuẩn) hoặc stdin (đầu vào chuẩn), cho phép dữ liệu được truyền trực tiếp qua kết nối SSH:

    • Bên gửi: Lệnh tar -c… – nén dữ liệu và xuất trực tiếp ra stdout.
    • Ống dẫn (|): Dữ liệu nén được truyền qua kết nối SSH.
    • Bên nhận: Lệnh tar -x… – nhận dữ liệu nén từ stdin và giải nén trực tiếp.

    Tại sao nên kết hợp tar và SSH?

    So với các phương pháp khác như scp -r (sao chép đệ quy), cách này có nhiều ưu điểm vượt trội:

    • Hiệu quả về không gian: Không cần tạo file .tar.gz tạm thời trên máy nguồn, tiết kiệm dung lượng đĩa.
    • Hiệu quả về tốc độ: Đối với các thư mục có hàng ngàn file nhỏ, việc tạo một luồng dữ liệu duy nhất thường nhanh hơn đáng kể so với việc scp phải khởi tạo kết nối cho từng file.
    • Linh hoạt: Bạn có toàn quyền kiểm soát các tùy chọn của tar, chẳng hạn như loại trừ các file/thư mục không cần thiết.
    • Bảo mật: Toàn bộ quá trình truyền dữ liệu đều được mã hóa bởi SSH.
    Lý do nên kết hợp tar và SSH
    Lý do nên kết hợp tar và SSH

    Khi nào nên kết hợp tar và SSH?

    Trong quá trình vận hành hệ thống, việc nhận cảnh báo “Disk space 99% full” trên một server ứng dụng quan trọng là điều hoàn toàn có thể xảy ra. Khi không gian lưu trữ không còn, các quy trình backup thông thường như nén thư mục thành file .tar.gz rồi chuyển đi bằng scp sẽ không thể thực hiện, do không đủ dung lượng để tạo file backup tạm thời.

    Để xử lý, giải pháp khả thi nhất là bạn hãy kết hợp công cụ tar cùng giao thức SSH. Phương pháp này cho phép truyền dữ liệu nén trực tiếp sang máy chủ backup qua mạng, loại bỏ hoàn toàn nhu cầu lưu trữ file trung gian trên server nguồn. Thủ thuật mạnh mẽ này rất tối ưu, phù hợp cho các quản trị viên hệ thống khi cần đảm bảo an toàn dữ liệu trong điều kiện giới hạn tài nguyên nghiêm trọng.​

    Nên kết hợp công cụ tar cùng giao thức SSH khi bị đầy ổ đĩa
    Nên kết hợp công cụ tar cùng giao thức SSH khi bị đầy ổ đĩa (Nguồn: Internet)

    Thiết lập xác thực bằng SSH key

    Để lệnh này hoạt động một cách tự động (đặc biệt là trong các script), bạn bắt buộc phải thiết lập xác thực bằng SSH key giữa server-app và server-backup. Điều này cho phép server-app kết nối đến server-backup mà không cần nhập mật khẩu.

    Nếu chưa thiết lập, bạn có thể thực hiện nhanh bằng lệnh sau trên server-app:

    # Lệnh này sẽ sao chép public key của bạn sang server-backup
    ssh-copy-id user@server-backup

    Backup tệp từ máy chủ nguồn sang máy chủ đích

    Trên server-app (server bị đầy dung lượng), bạn tiến hành chạy lệnh sau:

    tar czf - /home/app-dir/ | ssh user@server-backup "cat > /backup/app_backup.tar.gz"

    Hãy cùng phân tích ý nghĩa của dòng lệnh này:

    1. tar czf – /home/app-dir/

    • c: Create – tạo một file nén mới.
    • z: Gzip – sử dụng thuật toán nén gzip.
    • f -: File – Thay vì cung cấp một tên file (ví dụ: backup.tar.gz), chúng ta dùng dấu gạch ngang (-). Dấu này ra lệnh cho tar không ghi ra file trên đĩa, mà hãy đẩy toàn bộ dữ liệu nén ra luồng đầu ra tiêu chuẩn (stdout).

    2. | (pipeline)

    | (pipeline) là toán tử “pipe” của Linux, hoạt động như một ống dẫn, lấy toàn bộ dữ liệu từ stdout của lệnh bên trái và chuyển chúng thành luồng đầu vào tiêu chuẩn (stdin) cho lệnh bên phải.

    3. ssh user@server-backup “cat > /backup/app_backup.tar.gz”

    • ssh user@server-backup: Lệnh ssh kết nối đến server-backup.
    • "cat > ...": Sau khi kết nối thành công, cat sẽ thực thi lệnh nằm trong dấu ngoặc kép trên server-backup. Lệnh cat có một nhiệm vụ đơn giản là đọc bất cứ dữ liệu gì được đưa vào từ stdin (chính là luồng dữ liệu nén được tar đẩy qua đường ống) và ghi (>) vào file /backup/app_backup.tar.gz.
    Phân tích kết quả lệnh backup 
    Phân tích kết quả lệnh backup 

    Tóm lại

    Dữ liệu từ /home/app-dir/ được tar nén và đẩy thẳng vào đường ống, đi xuyên qua kết nối SSH an toàn, và được lệnh cat ở server đích hứng lấy rồi ghi thành file. Không một byte nào được ghi tạm xuống ổ cứng của server-app.

    Theo dõi tiến trình với pv (Pipe Viewer)

    Lệnh trên hoạt động rất tốt, nhưng có một nhược điểm là bạn sẽ tiến trình diễn ra như thế nào, có tốc độ bao nhiêu và bao giờ thì xong. Để khắc phục, hãy cài đặt pv (Pipe Viewer) và chèn vào giữa đường ống:

    # Cài đặt pv (nếu chưa có)
    # sudo yum install pv  (trên CentOS/RHEL)
    # sudo apt-get install pv (trên Debian/Ubuntu)
    
    # Lệnh backup có thanh tiến trình
    tar czf - /home/app-dir/ | pv | ssh user@server-backup "cat > /backup/app_backup.tar.gz"

    Bây giờ, pv sẽ hiển thị một thanh tiến trình cho bạn biết tốc độ truyền dữ liệu, tổng dung lượng đã truyền và thời gian đã trôi qua.

    Khôi phục dữ liệu từ file backup

    Bản backup chỉ phát huy giá trị khi có thể được phục hồi một cách dễ dàng và hiệu quả. Quy trình khôi phục dữ liệu sẽ tuân theo nguyên tắc hoạt động của quá trình backup, nhưng thực hiện theo chiều ngược lại.

    # Trên server-app (nơi cần khôi phục dữ liệu)
    ssh user@server-backup "cat /backup/app_backup.tar.gz" | tar xzf - -C /home/restore-dir/
    • ssh ... "cat ...": Đọc file backup trên server-backup và đẩy nội dung của nó ra stdout.
    • |: Dữ liệu lại được đưa qua pipeline.
    • tar xzf - -C /home/restore-dir/: Lần này, tar nhận dữ liệu từ stdin (-), giải nén (x), và bung nó ra tại thư mục /home/restore-dir/ (-C).

    Lưu ý quan trọng khi sử dụng tar SSH

    • Yêu cầu hệ thống: Cả máy chủ cục bộ và máy chủ từ xa đều phải được cài đặt ssh (máy chủ từ xa cần chạy dịch vụ sshd) và lệnh tar.
    • Quyền hạn: Tài khoản người dùng phải có quyền đọc/ghi tại các thư mục nguồn và thư mục đích tương ứng.
    • Tính toàn vẹn: Phương pháp này hiệu quả nhưng nếu kết nối SSH bị ngắt giữa chừng, quá trình truyền dữ liệu sẽ bị dừng và tệp đích có thể không hoàn chỉnh.

    Câu hỏi thường gặp

    Sao lưu tar qua SSH có giúp tiết kiệm tài nguyên không?

    Có, sao lưu qua tar và SSH có giúp tiết kiệm tài nguyên bằng cách nén dữ liệu trước khi truyền, giảm băng thông và thời gian truyền tải, đồng thời việc tạo tệp .tar cũng giúp gom nhiều tệp thành một, dễ quản lý và sao lưu. SSH còn có thể tự động nén dữ liệu trong quá trình truyền để tối ưu hóa hiệu suất.

    Làm sao phục hồi dữ liệu từ server remote?

    Bạn sử dụng lệnh sau:
    ssh user@remote_host "cat backup.tar.gz" | tar xz -C /restore_folder
    Sau đó bạn giải nén trả về đúng thư mục mong muốn.​

    Backup có bị mất kết nối khi truyền file lớn không?

    Có thể bị bị mất kết nối nếu mạng yếu, vì vậy bạn nên kiểm tra hoặc tăng thời gian chờ (timeout) trong cấu hình SSH.​

    Muốn tự động hóa backup thì cần làm gì?

    Bạn có thể thiết lập cron job để lệnh backup chạy định kỳ, tránh phải thao tác thủ công mỗi lần cần sao lưu.​

    Giải pháp sao lưu trực tiếp qua mạng bằng tar SSH là lựa chọn tối ưu cho môi trường server Linux khi dung lượng ổ cứng cạn kiệt hoặc cần tự động hóa backup. Phương pháp này không chỉ giúp truyền dữ liệu an toàn, nhanh chóng mà còn loại bỏ nhu cầu lưu file backup trung gian, tiết kiệm tài nguyên và giảm rủi ro sự cố lưu trữ.

    Đánh giá bài viết
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng dẫn sử dụng lệnh watch trong Linux để giám sát tiến trình hiệu quả
    Hướng dẫn sử dụng lệnh watch trong Linux để giám sát tiến trình hiệu quả

    Lệnh watch Linux là một công cụ dòng lệnh mạnh mẽ giúp bạn tự động thực thi lặp lại một lệnh bất kỳ theo chu kỳ. Thay vì phải gõ lại lệnh liên tục để xem sự thay đổi, watch sẽ cập nhật kết quả ngay trên màn hình của bạn. Bài viết này sẽ…

    30/10/2025

    Hướng dẫn kỹ thuật backup dữ liệu real-time bằng cách kết hợp tar và netcat
    Hướng dẫn kỹ thuật backup dữ liệu real-time bằng cách kết hợp tar và netcat

    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,…

    30/10/2025

    Cách dùng Multitail để phân tích và đọc log chính xác, đơn giản
    Cách dùng Multitail để phân tích và đọc log chính xác, đơn giản

    Multitail là một công cụ dòng lệnh mạnh mẽ trên Linux giúp hiển thị nhiều file log hoặc output của nhiều lệnh khác nhau trên cùng một màn hình terminal, với khả năng chia nhỏ cửa sổ linh hoạt và các tính năng vượt trội so với lệnh tail truyền thống. Trong bài viết này,…

    30/10/2025

    Hướng dẫn chi tiết về lệnh Yum trong Linux: Từ cơ bản đến nâng cao
    Hướng dẫn chi tiết về lệnh Yum trong Linux: Từ cơ bản đến nâng cao

    Lệnh yum trong Linux là công cụ quản lý gói phần mềm mạnh mẽ, sử dụng giao diện dòng lệnh, giúp người dùng dễ dàng cài đặt, cập nhật, gỡ bỏ và kiểm soát các ứng dụng trên hệ điều hành Linux dựa trên nền tảng RPM như CentOS, RHEL và Fedora. Trong bài viết…

    30/10/2025