Cách sử dụng rsync để sao lưu dữ liệu của bạn trên Linux
rsync là một giao thức được xây dựng cho các hệ thống giống như 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 vào các thư mục khác nhau hoặc có thể được cấu hình để đồng bộ hóa 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 phần hướng dẫn này, chúng ta sẽ nói về việc thiết lập nó trên Linux. Đầu tiên, chúng ta cần cài đặt / cập nhật ứng dụng khách rsync. Trên các bản phân phối của Red Hat, lệnh này là cài đặt yz yum cài đặt rsync và trên Debian, đó là cài đặt sudo apt-get cài đặt rsync.
Lệnh trên Red Hat / CentOS, sau khi đăng nhập bằ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.
Sử dụng rsync để sao lưu cục bộ
Trong phần đầu tiên 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 ổ cứng, nhưng điều này sẽ hoạt động chính xác như 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 để chúng tôi có thể tiếp cận điều này, tùy thuộc vào loại 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 đây sẽ đủ:
$ rsync -av --delete / Directory1 / / Directory2 /
Đoạn mã trên sẽ đồng bộ hóa nội dung của Directory1 thành Directory2 và không để lại sự khác biệt giữa hai nội dung. Nếu rsync thấy rằng Directory2 có tệp mà Directory1 không có, 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 công tắc 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 cho rsync thực hiện với các bản sao lưu:
1. -a = đệ quy (đệ quy vào thư mục), liên kết (sao chép liên kết dưới dạng liên kết tượng trưng), perms (giữ quyền), thời gian (bảo toàn thời gian sửa đổi), nhóm (bảo tồn nhóm), chủ sở hữu (bảo quản chủ sở hữu), bảo quản tệp thiết bị và bảo quản các tập tin đặc biệt.
2. -v = dài dòng. Lý do tôi nghĩ verbose rất 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: Điều gì sẽ xảy ra nếu ổ 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, sau đó bạn chạy tập lệnh rsync của mình và nó sẽ đẩy các thay đổi đó vào bản sao lưu của bạn, từ đó 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. -delete = Điều này báo cho rsync xóa bất kỳ tệp nào trong Directory2 không có trong Directory1. Nếu bạn chọn sử dụng tùy chọn này, tôi cũng khuyên bạn nên sử dụng các tùy chọn dài dòng, vì những lý do đã đề cập ở trên.
Sử dụng tập lệnh ở trên, đây là đầu ra được tạo bằng cách sử dụng rsync để sao lưu Directory1 sang Directory2. Lưu ý rằng nếu không có công tắc dài dòng, 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 so với các bản sao tồn tại trong Directory2 và do đó chúng đã được sao lưu. Mẹo của Noob: Lưu ý các dấu gạch chéo ở cuối các thư mục trong lệnh rsync của tôi - những thứ này là cần thiết, hãy nhớ ghi nhớ chúng.
Chúng tôi sẽ giới thiệu 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 danh sách đầy đủ, bạn có thể nhập vào man man rsync tựa và xem danh sách đầy đủ các công tắc để sử dụng.
Đó là về nó bao gồm các liên quan đến sao lưu cục bộ. Như bạn có thể nói, rsync rất dễ sử dụng. Nó phức tạp hơn một chút khi sử dụng nó để đồng bộ dữ liệu với 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 để làm điều đó.
Sử dụng rsync để sao lưu 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 ta sẽ tìm hiểu phương pháp đường hầm rsync thực tế nhất (cũng dễ nhất và an toàn nhất) thông qua SSH. Hầu hết các máy chủ và thậm chí nhiều khách hàng đã có SSH và nó có thể được sử dụng để sao lưu rsync của bạn. Chúng tôi sẽ chỉ cho bạn quá trình để có một máy Linux để sao lưu sang máy khác trên mạng cục bộ. Quá trình sẽ giống hệt như vậy 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 đã cấu hình SSH), sẽ cần phải được chuyển tiếp trên bất kỳ thiết bị mạng nào ở phía máy chủ.
Trên máy chủ (máy tính sẽ nhận bản sao lưu), hãy đảm bảo SSH và rsync được cài đặt.
# yum -y cài đặt ssh rsync
# sudo apt-get cài đặt ssh rsync
Khác vớ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 làm là thiết lập 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 dự định sử dụng có mật khẩu phức tạp và cũng có thể là một ý tưởng tốt để chuyển đổi cổng mà SSH nghe (mặc định là 22).
Chúng tôi sẽ chạy cùng một lệnh mà chúng tôi đã làm khi sử dụng rsync trên máy tính cục bộ, nhưng bao gồm các bổ sung cần thiết để tạo đường hầm rsync 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, chúng tôi sẽ kết nối với Phần mềm 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 nghe trên một số cổng khác ngoài 22, bạn sẽ cần chỉ đị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 cung cấp khi sao lưu trên mạng khá giống với 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 mật khẩu. Điều này là để xác thực với SSH. Bạn có thể thiết lập các 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 hóa việc 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 các bản sao lưu hàng đêm hoặc thường thì bạn muốn chúng chạy chúng.
Để chỉnh sửa tệp bảng cron cho người dùng mà 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. Nhập kiểu chữ I vào phần 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 trong năm, ngày trong tuần, lệnh.
Nó có thể hơi khó hiểu lúc đầu, vì vậy hãy để tôi cho bạn một ví dụ. Lệnh sau sẽ chạy lệnh rsync mỗi đêm vào lúc 10 giờ tối:
0 22 * * * rsync -av --delete / Directory1 / / Directory2 /
Các 0 0 đầu tiên chỉ định phút của giờ, và 2222 chỉ định 10 giờ tối. Vì chúng tôi muốn lệnh này chạy hàng ngày, chúng tôi sẽ để các trường còn lại có dấu hoa thị và sau đó dán lệnh rsync.
Sau khi bạn hoàn tất việc định cấu hình Cron, nhấn esc, sau đó gõ vào dòng chữ: 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ể hiểu sâu hơn rất nhiều so với điều này, nhưng để tiếp tục 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 đã chỉ ra rằng 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.
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 zip. Bạn sẽ cần chỉ định nơi bạn muốn đặt tệp zip 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 vào /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ẽ không hiệu quả đối với các bản sao lưu lớn, xem xét tệp zip sẽ thay đổi mỗi khi thay đổi nhỏ nhất được thực hiện cho một tệp. 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ù đó là trong một zip) và chỉ chuyển vài kilobyte dữ liệu thay đổi.
Có một số cách khác nhau để bạn có thể mã hóa 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 ổ cứng (cách mà các 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 tin của bạn trước khi gửi chúng đến một máy chủ từ xa (hoặc ổ cứng khác, bất cứ điều gì bạn có thể 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.
Cho dù bạn chọn tùy chọn và tính năng nào, rsync vẫn chứng tỏ là một trong những công cụ sao lưu linh hoạt và hiệu quả nhất cho đến nay và ngay cả một tập lệnh rsync đơn giản cũng có thể giúp bạn tránh mất dữ liệu.