CodeGym /Các khóa học /Docker SELF /Sao lưu dữ liệu bằng rsync và scp

Sao lưu dữ liệu bằng rsync và scp

Docker SELF
Mức độ , Bài học
Có sẵn

Sao lưu dữ liệu bằng rsyncscp

1. Tại sao sao lưu quan trọng?

Hôm nay tụi mình sẽ nói về một trong những nhiệm vụ quan trọng nhất cho tất cả những ai làm việc trong thế giới IT và lập trình — sao lưu dữ liệu. Nếu bạn từng mất dữ liệu quan trọng vì lỗi đĩa hay sai sót, thì bạn hiểu nó nghiêm trọng như thế nào. Còn nếu chưa từng mất — thì tụi mình ở đây để giúp bạn tránh điều đó!

Hãy tưởng tượng: bạn đã làm việc chăm chỉ trên một dự án trong vài tháng, và rồi một ngày đẹp trời, ổ cứng của bạn quyết định đình công. Đúng, điều này cũng khó chịu như quên thêm dấu chấm phẩy ở cuối câu lệnh SQL, nhưng còn tệ gấp nghìn lần. Hệ thống có thể không đáng tin cậy, con người có thể sai lầm, và các file có thể mất. Sao lưu là cách chuẩn bị sẵn sàng trước những bất ngờ không vui như vậy.

Trên Linux, có một số công cụ mạnh để thực hiện sao lưu. Hôm nay, tụi mình sẽ làm quen với hai công cụ: rsyncscp.


2. Lệnh rsync: công cụ sao chép dữ liệu nhanh và thông minh

rsync là một trong những công cụ phổ biến nhất để sao chép và đồng bộ dữ liệu. Điểm mạnh chính của nó là tốc độ và hiệu quả. Thay vì sao chép tất cả dữ liệu, rsync chỉ sao chép các tệp đã thay đổi. Điều này làm cho nó trở nên lý tưởng cho việc sao lưu định kỳ các tập dữ liệu lớn.

Cú pháp của rsync

Đây là định dạng cơ bản của lệnh:

rsync [options] nguồn đích

Trong đó:

  • nguồn — đường dẫn tới tệp hoặc thư mục mà bạn muốn sao chép.
  • đích — nơi bạn muốn lưu trữ dữ liệu.

Các options chính và chức năng của chúng

Dưới đây là một số options thường được sử dụng:

  • -a (archive): bao gồm sao chép tất cả metadata (quyền truy cập, dấu thời gian, v.v.).
  • -v (verbose): hiển thị thông tin chi tiết về quá trình để bạn biết điều gì đang diễn ra.
  • --progress: hiển thị tiến trình khi sao chép (rất hữu ích nếu bạn sao chép các tệp lớn).
  • --delete: xóa các tệp ở phía đích mà không có ở phía nguồn. Rất hữu ích cho việc đồng bộ hoàn toàn.
  • -z (compress): nén dữ liệu trước khi truyền, giúp tăng tốc độ (đặc biệt quan trọng cho các thao tác qua mạng).

Ví dụ: sao chép dữ liệu cục bộ

Hãy tạo thư mục /backup để lưu trữ các bản sao lưu.

mkdir /backup

Sao chép toàn bộ nội dung của thư mục /home vào /backup:

rsync -av /home /backup

Giải thích ví dụ này:

  • -a giữ nguyên cấu trúc và quyền truy cập tệp.
  • -v cung cấp thông tin về quá trình thực hiện.

Nếu bạn chạy lại lệnh, nó chỉ sao chép các tệp mới hoặc đã thay đổi.

Ví dụ: sao lưu dữ liệu từ xa

Bây giờ, giả sử bạn muốn gửi bản sao lưu sang một server từ xa. Để làm điều này, rsync hỗ trợ sử dụng SSH.

rsync -av /backup user@remote_server:/remote_backup

Trong đó:

  • user — tên user trên server từ xa.
  • remote_server — địa chỉ của server từ xa của bạn (ví dụ, địa chỉ IP hoặc tên miền).
  • /remote_backup — đường dẫn trên server nơi bạn muốn lưu trữ dữ liệu.

Nếu bạn có khóa SSH để xác thực, việc truyền tệp sẽ trở nên dễ dàng (và an toàn) hơn rất nhiều.


3. Lệnh scp: đơn giản và hiệu quả

scp (Secure Copy Protocol) — là công cụ để sao chép tệp giữa máy cục bộ và máy từ xa. Nó dễ dùng hơn một chút so với rsync và thích hợp cho các trường hợp không cần đồng bộ hóa toàn bộ.

Cú pháp scp

Dưới đây là định dạng cơ bản của lệnh:

scp [tuỳ chọn] nguồn đích

Trong đó:

  • nguồn — đường dẫn tới tệp mà bạn muốn sao chép.
  • đích — địa chỉ nơi bạn muốn chuyển tới.

Các tùy chọn chính và chức năng của chúng

Một số tùy chọn hữu ích:

  • -r: sao chép đệ quy cho thư mục.
  • -C: nén tệp trước khi truyền.
  • -P: chỉ định cổng SSH nếu nó khác với cổng mặc định (22).

Ví dụ: sao chép tệp lên máy từ xa

Bạn muốn truyền tệp từ máy tính cục bộ của mình lên máy chủ. Giả sử tệp có tên là document.txt.

scp document.txt user@remote_server:/remote_folder

Nếu tệp nằm trong thư mục /home/user/documents, lệnh sẽ như sau:

scp /home/user/documents/document.txt user@remote_server:/remote_folder

Bây giờ tệp sẽ có sẵn trên máy từ xa trong thư mục /remote_folder.

Ví dụ: sao chép tệp từ máy chủ về máy cục bộ

Quá trình này hoạt động ngược lại:

scp user@remote_server:/remote_folder/document.txt /home/user/documents

Lúc này, tệp document.txt sẽ xuất hiện trong thư mục cục bộ của bạn.


4. Sự khác nhau giữa rsyncscp

Mặc dù cả hai lệnh cho phép sao chép tệp, nhưng chúng có những đặc điểm riêng.

Đặc điểm rsync scp
Tốc độ Chỉ sao chép dữ liệu đã thay đổi, nhanh hơn với dung lượng lớn Sao chép toàn bộ, kể cả khi tệp không thay đổi
Đồng bộ hóa Hỗ trợ đầy đủ đồng bộ hóa Không hỗ trợ đồng bộ hóa
Nén dữ liệu -z -C
Dễ sử dụng Cấu hình phức tạp hơn Giao diện đơn giản

Vậy nên, nếu bạn chỉ cần chuyển tệp nhanh chóng — dùng scp. Nếu cần thực hiện đồng bộ hóa thường xuyên với lượng dữ liệu lớn — chắc chắn dùng rsync.


5. Ví dụ thực tiễn: thiết lập sao lưu

Dưới đây là một nhiệm vụ thực hành: bạn muốn thiết lập toàn bộ quy trình sao lưu dự án của mình lên một server từ xa.

  1. Giả sử file của dự án của bạn được lưu trong thư mục /home/user/project. Bạn muốn chúng được sao lưu vào server backup.server.com trong thư mục /backups/project.

  2. Để việc sao chép nhanh hơn, chúng ta sẽ sử dụng rsync.

Thiết lập script sao lưu

Tạo file backup.sh:

#!/bin/bash

SOURCE="/home/user/project"
DESTINATION="user@backup.server.com:/backups/project"

# Thực hiện sao lưu bằng rsync
rsync -av --delete "$SOURCE" "$DESTINATION"

# Hiển thị thông báo hoàn thành
echo "Sao lưu hoàn thành!"

Chạy lệnh để biến file thành có thể thực thi:

chmod +x backup.sh

Bây giờ bạn có thể chạy script này thủ công:

./backup.sh

Hoặc thêm nó vào cron để thực thi tự động (chúng ta sẽ nói về cron sau trong khóa học).


6. Những lỗi thường gặp và cách tránh

  1. Đường dẫn không chính xác trong dòng lệnh. Nếu chỉ định sai đường dẫn tới các tệp, rsync hoặc scp sẽ không sao chép gì cả. Hãy sử dụng các lệnh ls hoặc pwd để đảm bảo rằng bạn đã nhập đúng đường dẫn.

  2. Không có khóa xác thực. Nếu khi sử dụng SSH mà bạn chưa thiết lập khóa, bạn sẽ luôn bị yêu cầu nhập mật khẩu. Hãy thiết lập khóa SSH để quy trình trở nên đơn giản hơn.

  3. Dừng quá trình sao lưu. Nếu mạng không ổn định, rsync vẫn sẽ hoàn tất việc truyền tệp ở lần chạy tiếp theo. Nhưng với scp thì bạn sẽ phải bắt đầu lại từ đầu.

Với rsyncscp, bạn có thể tự tin sao chép và đồng bộ dữ liệu của mình cả trên máy cục bộ lẫn trên các máy chủ từ xa. Đây là những công cụ đáng tin cậy khi nói về việc bảo vệ các tệp quan trọng.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION