Làm thế nào để sử dụng rsync để sao lưu dữ liệu của bạn trên Linux

Mục lục:

Làm thế nào để sử dụng rsync để sao lưu dữ liệu của bạn trên Linux
Làm thế nào để sử dụng rsync để sao lưu dữ liệu của bạn trên Linux

Video: Làm thế nào để sử dụng rsync để sao lưu dữ liệu của bạn trên Linux

Video: Làm thế nào để sử dụng rsync để sao lưu dữ liệu của bạn trên Linux
Video: Giao tiếp cảm biến với Blynk App 2.0 | Đọc giá trị cảm biến | Tự học IoT cơ bản (P6) - YouTube 2024, Tháng tư
Anonim
rsync là một giao thức được xây dựng cho các hệ thống giống Unix, cung cấp tính linh hoạt không thể tin được để sao lưu và đồng bộ hóa dữ liệu. Nó có thể được sử dụng cục bộ để sao lưu các tập tin vào các thư mục khác nhau hoặc có thể được cấu hình để đồng bộ trên Internet với các máy chủ khác.
rsync là một giao thức được xây dựng cho các hệ thống giống Unix, cung cấp tính linh hoạt không thể tin được để sao lưu và đồng bộ hóa dữ liệu. Nó có thể được sử dụng cục bộ để sao lưu các tập tin vào các thư mục khác nhau hoặc có thể được cấu hình để đồng bộ trên Internet với các máy chủ khác.

Nó có thể được sử dụng trên các hệ thống Windows nhưng chỉ có sẵn thông qua các cổng khác nhau (như Cygwin), vì vậy trong cách này chúng ta sẽ nói về việc thiết lập nó trên Linux. Trước tiên, chúng ta cần cài đặt / cập nhật ứng dụng rsync. Trên các bản phân phối Red Hat, lệnh này là “yum install rsync” và trên Debian, nó là “sudo apt-get install rsync.”

 Lệnh trên Red Hat / CentOS, sau khi đăng nhập dưới dạng root (lưu ý rằng một số bản phân phối gần đây của Red Hat hỗ trợ phương thức sudo).
Lệnh trên Red Hat / CentOS, sau khi đăng nhập dưới dạng root (lưu ý rằng một số bản phân phối gần đây của Red Hat hỗ trợ phương thức sudo).
 Lệnh trên Debian / Ubuntu.
Lệnh trên Debian / Ubuntu.

Sử dụng rsync để sao lưu cục bộ

Trong phần đầu của hướng dẫn này, chúng tôi sẽ sao lưu các tệp từ Directory1 đến Directory2. Cả hai thư mục này đều nằm trên cùng một ổ đĩa cứng, nhưng điều này sẽ hoạt động giống nhau nếu các thư mục tồn tại trên hai ổ đĩa khác nhau. Có một số cách khác nhau mà chúng tôi có thể tiếp cận điều này, tùy thuộc vào loại bản sao lưu bạn muốn định cấu hình. Đối với hầu hết các mục đích, dòng mã sau sẽ đủ:

$ rsync -av --delete /Directory1/ /Directory2/

Đoạn mã trên sẽ đồng bộ hóa nội dung của Directory1 đến Directory2, và không để lại sự khác biệt giữa hai. Nếu rsync thấy rằng Directory2 có một tệp mà Directory1 không, nó sẽ xóa nó. Nếu rsync tìm thấy một tệp đã được thay đổi, tạo hoặc xóa trong Directory1, nó sẽ phản ánh những thay đổi tương tự đối với Directory2.

Có rất nhiều thiết bị chuyển mạch khác nhau mà bạn có thể sử dụng cho rsync để cá nhân hóa nó theo nhu cầu cụ thể của bạn. Dưới đây là những gì mã nói trên nói với rsync để làm với các bản sao lưu:

1. -a = đệ quy (recurse vào thư mục), liên kết (sao chép symlink như symlink), perms (bảo tồn quyền), lần (bảo tồn sửa đổi lần), nhóm (bảo quản nhóm), chủ sở hữu (bảo quản chủ sở hữu), bảo quản các tập tin thiết bị, và giữ các tập tin đặc biệt. 2. -v = verbose. Lý do tôi nghĩ rằng tiết là quan trọng là vì vậy bạn có thể thấy chính xác những gì rsync đang sao lưu. Hãy suy nghĩ về điều này: Nếu ổ đĩa cứng của bạn bị hỏng và bắt đầu xóa các tệp mà bạn không biết, thì bạn chạy tập lệnh rsync và đẩy các thay đổi đó vào bản sao lưu của bạn, do đó xóa tất cả các phiên bản của tệp mà bạn không muốn nhận loại bỏ? 3. –elete = Điều này cho rsync xóa bất kỳ tệp nào nằm trong Directory2 không có trong Directory1. Nếu bạn chọn sử dụng tùy chọn này, tôi khuyên bạn cũng nên sử dụng các tùy chọn tiết, vì những lý do được đề cập ở trên.

Sử dụng tập lệnh ở trên, đây là kết quả được tạo bằng cách sử dụng rsync để sao lưu Directory1 đến Directory2. Lưu ý rằng nếu không có công tắc tiết, bạn sẽ không nhận được thông tin chi tiết như vậy.

Ảnh chụp màn hình ở trên cho chúng ta biết rằng File1.txt và File2.jpg đã được phát hiện là mới hoặc thay đổi từ các bản sao tồn tại trong Directory2, và do đó chúng được sao lưu. Mẹo Noob: Lưu ý các dấu gạch chéo ở cuối thư mục trong lệnh rsync của tôi - những thứ đó là cần thiết, hãy nhớ ghi nhớ chúng.
Ảnh chụp màn hình ở trên cho chúng ta biết rằng File1.txt và File2.jpg đã được phát hiện là mới hoặc thay đổi từ các bản sao tồn tại trong Directory2, và do đó chúng được sao lưu. Mẹo Noob: Lưu ý các dấu gạch chéo ở cuối thư mục trong lệnh rsync của tôi - những thứ đó là cần thiết, hãy nhớ ghi nhớ chúng.

Chúng tôi sẽ đi qua một vài công tắc tiện dụng hơn vào cuối hướng dẫn này, nhưng chỉ cần nhớ rằng để xem một danh sách đầy đủ, bạn có thể gõ "man rsync" và xem danh sách đầy đủ các công tắc để sử dụng.

Điều đó bao gồm nó như xa như sao lưu địa phương có liên quan. Như bạn có thể nói, rsync rất dễ sử dụng. Nó hơi phức tạp hơn khi sử dụng nó để đồng bộ dữ liệu với một máy chủ bên ngoài qua Internet, nhưng chúng tôi sẽ chỉ cho bạn một cách đơn giản, nhanh chóng và an toàn để thực hiện điều đó.

Sử dụng rsync để sao lưu bên ngoài

rsync có thể được cấu hình theo nhiều cách khác nhau để sao lưu bên ngoài, nhưng chúng tôi sẽ đi qua phương pháp thực tế nhất (cũng là dễ nhất và an toàn nhất) của rsync đường hầm thông qua SSH. Hầu hết các máy chủ và thậm chí nhiều máy khách đã có SSH, và nó có thể được sử dụng cho các bản sao lưu rsync của bạn. Chúng tôi sẽ chỉ cho bạn quá trình để có được một máy Linux để sao lưu khác trên một mạng cục bộ. Quá trình này sẽ giống hệt nhau nếu một máy chủ lưu trữ trên internet ở đâu đó, chỉ cần lưu ý rằng cổng 22 (hoặc bất kỳ cổng nào bạn đã định cấu hình SSH), sẽ cần được chuyển tiếp trên bất kỳ thiết bị mạng nào trên phía máy chủ.

Trên máy chủ (máy tính sẽ nhận các bản sao lưu), hãy đảm bảo đã cài đặt SSH và rsync.

# yum -y install ssh rsync

# sudo apt-get install ssh rsync

Ngoài việc cài đặt SSH và rsync trên máy chủ, tất cả những gì thực sự cần phải thực hiện là cài đặt các kho lưu trữ trên máy chủ nơi bạn muốn các tệp được sao lưu và đảm bảo rằng SSH bị khóa. Đảm bảo rằng người dùng bạn định sử dụng có mật khẩu phức tạp và cũng có thể là một ý tưởng hay khi chuyển cổng SSH lắng nghe (mặc định là 22).

Chúng ta sẽ chạy cùng lệnh mà chúng ta đã sử dụng rsync trên một máy tính cục bộ, nhưng bao gồm các bổ sung cần thiết cho rsync đường hầm thông qua SSH đến một máy chủ trên mạng cục bộ của tôi. Đối với người dùng “geek” kết nối với “192.168.235.137” và sử dụng các công tắc tương tự như trên (-av –delete), chúng tôi sẽ chạy như sau:

$ rsync -av –delete -e ssh /Directory1/ [email protected]:/Directory2/

Nếu bạn có SSH lắng nghe trên một số cổng khác với 22, bạn sẽ cần phải xác định số cổng, chẳng hạn như trong ví dụ này, nơi tôi sử dụng cổng 12345:

$ rsync -av –delete -e 'ssh -p 12345' /Directory1/ [email protected]:/Directory2/

Như bạn có thể thấy từ ảnh chụp màn hình ở trên, đầu ra được đưa ra khi sao lưu trên mạng là khá nhiều giống như khi sao lưu cục bộ, điều duy nhất thay đổi là lệnh bạn sử dụng. Cũng lưu ý rằng nó nhắc nhở cho một mật khẩu.Điều này là để xác thực với SSH. Bạn có thể thiết lập khóa RSA để bỏ qua quá trình này, điều này cũng sẽ đơn giản hóa việc tự động hóa rsync.
Như bạn có thể thấy từ ảnh chụp màn hình ở trên, đầu ra được đưa ra khi sao lưu trên mạng là khá nhiều giống như khi sao lưu cục bộ, điều duy nhất thay đổi là lệnh bạn sử dụng. Cũng lưu ý rằng nó nhắc nhở cho một mật khẩu.Điều này là để xác thực với SSH. Bạn có thể thiết lập khóa RSA để bỏ qua quá trình này, điều này cũng sẽ đơn giản hóa việc tự động hóa rsync.

Tự động sao lưu rsync

Cron có thể được sử dụng trên Linux để tự động thực hiện các lệnh, chẳng hạn như rsync. Sử dụng Cron, chúng tôi có thể có hệ thống Linux của chúng tôi chạy bản sao lưu hàng đêm hoặc thường xuyên bạn muốn chúng chạy.

Để chỉnh sửa tệp bảng cron cho người dùng bạn đã đăng nhập, hãy chạy:

$ crontab -e

Bạn sẽ cần phải làm quen với vi để chỉnh sửa tệp này. Gõ “I” để chèn, sau đó bắt đầu chỉnh sửa tệp bảng cron.

Cron sử dụng cú pháp sau: phút của giờ, giờ trong ngày, ngày trong tháng, tháng của năm, ngày trong tuần, lệnh.

Nó có thể là một chút bối rối lúc đầu, vì vậy hãy để tôi cung cấp cho bạn một ví dụ. Lệnh sau sẽ chạy lệnh rsync mỗi tối lúc 10 giờ tối:

0 22 * * * rsync -av --delete /Directory1/ /Directory2/

"0" đầu tiên chỉ định phút của giờ và "22" chỉ định 10 giờ. Vì chúng ta muốn lệnh này chạy hàng ngày, chúng ta sẽ để phần còn lại của các trường có dấu hoa thị và sau đó dán lệnh rsync.

Sau khi bạn đã hoàn tất việc cấu hình Cron, nhấn thoát, sau đó gõ “: wq” (không có dấu ngoặc kép) và nhấn enter. Điều này sẽ lưu các thay đổi của bạn trong vi.

Cron có thể nhận được nhiều hơn chiều sâu hơn thế này, nhưng để đi về nó sẽ vượt ra ngoài phạm vi của hướng dẫn này. Hầu hết mọi người sẽ chỉ muốn một bản sao lưu hàng tuần hoặc hàng ngày đơn giản và những gì chúng tôi đã cho thấy bạn có thể dễ dàng thực hiện điều đó. Để biết thêm thông tin về Cron, vui lòng xem các trang hướng dẫn sử dụng.

Các tính năng hữu ích khác

Một điều hữu ích khác bạn có thể làm là đặt các bản sao lưu của bạn vào một tệp nén. Bạn sẽ cần phải xác định nơi bạn muốn tập tin zip được đặt, và sau đó rsync thư mục đó vào thư mục sao lưu của bạn. Ví dụ:

$ zip /ZippedFiles/archive.zip /Directory1/ && rsync -av --delete /ZippedFiles/ /Directory2/

Lệnh trên lấy các tệp từ Directory1, đặt chúng trong /ZippedFiles/archive.zip và sau đó rsyncs thư mục đó vào Directory2. Ban đầu, bạn có thể nghĩ rằng phương pháp này sẽ chứng minh không hiệu quả cho các bản sao lưu lớn, xem xét các tập tin zip sẽ thay đổi mỗi khi thay đổi nhỏ nhất được thực hiện cho một tập tin. Tuy nhiên, rsync chỉ chuyển dữ liệu đã thay đổi, vì vậy nếu tệp zip của bạn là 10 GB và sau đó bạn thêm tệp văn bản vào Directory1, rsync sẽ biết đó là tất cả những gì bạn đã thêm (mặc dù nó ở dạng zip) và chỉ chuyển vài kilobyte dữ liệu đã thay đổi.
Lệnh trên lấy các tệp từ Directory1, đặt chúng trong /ZippedFiles/archive.zip và sau đó rsyncs thư mục đó vào Directory2. Ban đầu, bạn có thể nghĩ rằng phương pháp này sẽ chứng minh không hiệu quả cho các bản sao lưu lớn, xem xét các tập tin zip sẽ thay đổi mỗi khi thay đổi nhỏ nhất được thực hiện cho một tập tin. Tuy nhiên, rsync chỉ chuyển dữ liệu đã thay đổi, vì vậy nếu tệp zip của bạn là 10 GB và sau đó bạn thêm tệp văn bản vào Directory1, rsync sẽ biết đó là tất cả những gì bạn đã thêm (mặc dù nó ở dạng zip) và chỉ chuyển vài kilobyte dữ liệu đã thay đổi.

Có một vài cách khác nhau để bạn có thể mã hóa các bản sao lưu rsync của mình. Phương pháp đơn giản nhất là cài đặt mã hóa trên chính ổ đĩa cứng (phương thức mà tệp của bạn đang được sao lưu). Một cách khác là mã hóa các tệp của bạn trước khi gửi chúng đến một máy chủ từ xa (hoặc ổ đĩa cứng khác, bất cứ điều gì bạn xảy ra để sao lưu). Chúng tôi sẽ đề cập đến các phương pháp này trong các bài viết sau.

Bất kể các tùy chọn và tính năng nào bạn chọn, rsync đã chứng minh là một trong những công cụ sao lưu hiệu quả và linh hoạt nhất cho tới nay, và thậm chí cả một tập lệnh rsync đơn giản cũng có thể giúp bạn không bị mất dữ liệu.

Đề xuất: