rsync trong Linux

Việc sao lưu dữ liệu là việc mà hầu hết các sysadmin cần làm thường xuyên. Ngoài việc sao lưu các tập tin cục bộ, chúng ta có thể cần sao lưu dữ liệu từ 1 máy chủ web hoặc từ những vị trí từ xa. rsync là 1 lệnh thường được dùng để đồng bộ hóa các tập tin và thư mục từ 1 vị trí này đến vị trí khác trong khi giảm tối thiểu việc truyền dữ liệu bằng cách sử dụng việc nén và tính toán sự khác nhau của tập tin.

Ưu điểm của rsync bao trùm lệnh cp khi rsync sử dụng các giải thuật mạnh trong việc so sánh điểm khác nhau giữa các tập tin. Ngoài ra, nó hỗ trợ truyền dữ liệu giữa các máy tính từ xa. Trong khi thực hiện sao chép, nó so sánh các tập tin ở vị trí nguồn và đích và sẽ chỉ sao chép các tập tin mới hơn. Nó cũng hỗ trợ nén, mã hóa ….

Trong bài viết này, chúng ta sẽ tìm hiểu cách sao lưu dữ liệu với rsync trong Linux.

1. Sao chép dữ liệu với rsync

Để sao chép dữ liệu từ 1 vị trí nguồn đến 1 vị trí đích, sử dụng:

$ rsync –av source_path destination_path

Trong lệnh trên:

  • -a => archive
  • -v => verbose, in chi tiết hoặc tiến trình ra stdout

Lệnh trên sẽ sao chép 1 cách đệ quy tất cả các tập tin từ đường dẫn nguồn đến đường dẫn đích. Chúng ta có thể chỉ rõ các đường dẫn là đường dẫn cục bộ hay từ xa.

Để sao lưu dữ liệu đến 1 máy chủ từ xa, sử dụng:

$ rsync –av source_dir [email protected]:PATH

Để giữ 1 bản sao tại đích, chạy cùng 1 lệnh rsync được định thì tại những khoảng thời gian nhất định. Nó sẽ sao chép chỉ những tập tin được thay đổi đến vị trí đích.

Ở trên chúng ta đã đề cập việc sao chép dữ liệu từ cục bộ sang các máy tính từ xa bằng rsync, để sao chép dữ liệu từ các máy tính từ xa về máy cục bộ, ta sử dụng cú pháp sau:

$ rsync –av [email protected]:PATH destination

Việc này rất có ích khi chúng ta cần phục hồi các dữ liệu đã sao lưu từ các máy tính từ xa.

Lệnh rsync sử dụng SSH để kết nối đến máy tính từ xa, vì vậy chúng ta nên cung cấp địa chỉ của máy từ xa theo định dạng [email protected], với user là tên tài khoản và host là địa chỉ IP hoặc tên của máy tính từ xa đó. PATH là đường dẫn trên máy từ xa nơi mà dữ liệu sẽ được sao chép, đường dẫn này nên là đường dẫn tuyệt đối.

Đảm bảo rằng máy chủ OpenSSH được cài đặt và đang chạy trên máy đó.

Trong trường hợp chúng ta muốn dùng rsync để sao chép dữ liệu giữa 2 vị trí cục bộ, sử dụng cú pháp sau:

$ rsync –av source destination

Vd:

$ rsync –av /home/test /home/backup

Với định dạng của đường dẫn, nếu chúng ta sử dụng / tại cuối của source, rsync sẽ sao chép nội dung của thư mục đó đến vị trí đích. Nếu không có / ở cuối đường dẫn của thư mục nguồn, rsync sẽ sao chép chính thư mục đó.

2. Nén dữ liệu trong rsync

Việc nén dữ liệu trong khi truyền tải qua mạng có thể tối ưu đáng kể tốc độ truyền tải. Chúng ta có thể sử dụng tùy chọn –z của rsync để nén dữ liệu. Ví dụ:

$ rsync –avz source destination

3. Loại trừ các tập tin khi lưu trữ với rsync

1 vài tập tin không cần cập nhật khi lưu trữ đến 1 vị trí từ xa. Chúng ta có thể cấu hình để báo cho rsync bỏ qua những tập tin này. Các tập tin có thể được loại trừ bằng 2 tùy chọn:

  • –exclude PATTERN

Chúng ta có thể chỉ ra mẫu ký tự đại diện cho các tập tin cần bỏ qua. Ví dụ:

$ rsync –avz /home/code/some_code/mnt/disk/backup/code –exclude “*.txt”

Lệnh trên sẽ bỏ qua các tập tin .txt khỏi việc sao lưu.

  • –exclude-from FILEPATH

Hoặc, chúng ta có thể chỉ ra 1 danh sách các tập tin cần loại trừ bằng việc cung cấp 1 tập tin chứa danh sách này.

$ rsync –av /home/backup --exclude-from excluded_list.txt

4. Xóa các tập tin không tồn tại

Mặc định, rsync không xóa các tập tin khỏi thư mục đích nếu chúng không còn tồn tại tại thư mục nguồn. Để loại bỏ các tập tin này, sử dụng tùy chọn –delete như sau:

$ rsync –avz SOURCE DESTINATION --delete

Chúng ta kết thúc bài tìm hiểu về lệnh rsync trong Linux tại đây. Chúc các bạn thành công!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.