Hướng dẫn không đồng bộ hóa dữ liệu với người mới bắt đầu
Giao thức rsync có thể khá đơn giản để sử dụng cho các công việc sao lưu / đồng bộ hóa thông thường, nhưng một số tính năng nâng cao hơn của nó có thể làm bạn ngạc nhiên. Trong bài viết này, chúng tôi sẽ chỉ ra làm thế nào ngay cả những người tích trữ dữ liệu lớn nhất và những người đam mê sao lưu có thể sử dụng rsync như một giải pháp duy nhất cho tất cả các nhu cầu dự phòng dữ liệu của họ.
Cảnh báo: Chỉ dành cho chuyên viên máy tính
Nếu bạn đang ngồi đó suy nghĩ về vấn đề gì thì rsync là gì? Tôi hoặc chỉ sử dụng rsync cho các nhiệm vụ thực sự đơn giản, bạn có thể muốn xem bài viết trước của chúng tôi về cách sử dụng rsync để sao lưu dữ liệu của bạn trên Linux, điều này mang lại giới thiệu về rsync, hướng dẫn bạn cài đặt và giới thiệu các chức năng cơ bản hơn của nó. Khi bạn đã nắm vững cách sử dụng rsync (thành thật mà nói, nó không phức tạp lắm) và thoải mái với thiết bị đầu cuối Linux, bạn đã sẵn sàng chuyển sang hướng dẫn nâng cao này.
Chạy rsync trên Windows
Trước tiên, hãy để người đọc Windows của chúng tôi trên cùng một trang với các bậc thầy về Linux của chúng tôi. Mặc dù rsync được xây dựng để chạy trên các hệ thống giống Unix, nhưng không có lý do gì bạn không thể sử dụng nó dễ dàng như vậy trên Windows. Cygwin tạo ra API Linux tuyệt vời mà chúng ta có thể sử dụng để chạy rsync, vì vậy hãy truy cập trang web của họ và tải xuống phiên bản 32 bit hoặc 64 bit, tùy thuộc vào máy tính của bạn.
Cài đặt đơn giản; bạn có thể giữ tất cả các tùy chọn ở các giá trị mặc định của chúng cho đến khi bạn vào màn hình Chọn Chọn Gói.
Bây giờ bạn cần thực hiện các bước tương tự cho Vim và SSH, nhưng các gói sẽ trông hơi khác khi bạn chọn chúng, vì vậy đây là một số ảnh chụp màn hình:
Cài đặt Vim:
Cài đặt SSH:
Sau khi bạn chọn ba gói đó, tiếp tục nhấp vào tiếp theo cho đến khi bạn hoàn tất cài đặt. Sau đó, bạn có thể mở Cygwin bằng cách nhấp vào biểu tượng mà trình cài đặt được đặt trên màn hình của bạn.
Các lệnh rsync: Đơn giản đến nâng cao
Bây giờ người dùng Windows đang ở trên cùng một trang, hãy xem lệnh rsync đơn giản và cho thấy việc sử dụng một số công tắc nâng cao có thể nhanh chóng làm cho nó phức tạp như thế nào.
Giả sử bạn có một loạt các tệp cần sao lưu - những người không có những ngày này? Bạn cắm vào ổ cứng di động để có thể sao lưu các tệp máy tính của mình và ra lệnh sau:
rsync -a / home / geek / files / / mnt / usb / files /
Hoặc, giao diện của nó trên máy tính Windows với Cygwin:
rsync -a / cygdrive / c / files / / cygdrive / e / files /
Khá đơn giản và tại thời điểm đó thực sự không cần sử dụng rsync, vì bạn chỉ cần kéo và thả các tệp. Tuy nhiên, nếu ổ cứng khác của bạn đã có một số tệp và chỉ cần các phiên bản cập nhật cộng với các tệp đã được tạo từ lần đồng bộ hóa cuối cùng, lệnh này rất tiện lợi vì nó chỉ gửi dữ liệu mới qua ổ cứng. Với các tệp lớn và đặc biệt là truyền tệp qua internet, đó là một vấn đề lớn.
Sao lưu các tệp của bạn vào ổ cứng ngoài và sau đó giữ ổ cứng ở cùng vị trí với máy tính của bạn là một ý tưởng rất tồi, vì vậy hãy xem những gì sẽ cần để bắt đầu gửi tệp của bạn qua internet đến một máy tính khác ( bạn đã thuê, một thành viên trong gia đình, v.v.).
rsync -av --delete -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Lệnh trên sẽ gửi các tệp của bạn đến một máy tính khác có địa chỉ IP là 10.1.1.1. Nó sẽ xóa các tệp không liên quan khỏi đích không còn tồn tại trong thư mục nguồn, xuất ra tên tệp được chuyển để bạn có ý tưởng về những gì đang diễn ra và đường hầm rsync thông qua SSH trên cổng 12345.
Các -một -v -e - đã hoàn thành
công tắc là một số trong những cơ bản nhất và thường được sử dụng; bạn nên biết nhiều về họ nếu bạn đang đọc hướng dẫn này. Chúng ta hãy xem qua một số công tắc khác đôi khi bị bỏ qua nhưng cực kỳ hữu ích:
--phát triển
- Công tắc này cho phép chúng tôi xem tiến trình chuyển của từng tệp. Nó đặc biệt hữu ích khi truyền các tệp lớn qua internet, nhưng có thể tạo ra một lượng thông tin vô nghĩa khi chỉ truyền các tệp nhỏ qua mạng nhanh.
Lệnh rsync với --phát triển
chuyển đổi như một bản sao lưu đang được tiến hành:
--một phần
- Đây là một công tắc khác đặc biệt hữu ích khi truyền các tệp lớn qua internet. Nếu rsync bị gián đoạn vì bất kỳ lý do nào ở giữa quá trình truyền tệp, thì tệp được truyền một phần sẽ được giữ trong thư mục đích và quá trình truyền được tiếp tục lại khi nó dừng lại sau khi lệnh rsync được thực thi lại. Khi truyền các tệp lớn qua internet (giả sử là một vài gigabyte), không có gì tệ hơn là bị mất một vài giây internet, màn hình xanh hoặc lỗi con người làm hỏng việc chuyển tệp của bạn và phải bắt đầu lại.
-P
- công tắc này kết hợp --phát triển
và --một phần
, vì vậy hãy sử dụng nó thay vào đó và nó sẽ làm cho lệnh rsync của bạn gọn gàng hơn một chút.
-z
hoặc là --nén
- Công tắc này sẽ làm cho rsync nén dữ liệu tệp khi nó được chuyển, giảm lượng dữ liệu phải được gửi đến đích. Đây thực sự là một công tắc khá phổ biến nhưng không cần thiết lắm, chỉ thực sự có lợi cho bạn khi chuyển giữa các kết nối chậm và nó không làm gì cho các loại tệp sau: 7z, avi, bz2, deb, g, z iso, jpeg, jpg, Mov, mp3, mp4, ogg, vòng / phút, tbz, tgz, z, zip.
-h
hoặc là --con người có thể đọc được
- Nếu bạn đang sử dụng --phát triển
chuyển đổi, chắc chắn bạn cũng sẽ muốn sử dụng cái này. Đó là, trừ khi bạn muốn chuyển đổi byte thành megabyte một cách nhanh chóng. Các -h
chuyển đổi chuyển đổi tất cả các số xuất ra thành định dạng có thể đọc được, do đó bạn thực sự có thể hiểu được lượng dữ liệu được truyền.
-n
hoặc là --chạy khô
- Công tắc này rất cần thiết để biết khi nào bạn lần đầu tiên viết tập lệnh rsync và thử nghiệm nó. Nó thực hiện chạy thử nhưng thực tế không thực hiện bất kỳ thay đổi nào - những thay đổi có thể vẫn được đưa ra như bình thường, vì vậy bạn có thể đọc mọi thứ và đảm bảo rằng nó trông ổn trước khi đưa kịch bản của bạn vào sản xuất.
-R
hoặc là --quan hệ
- Công tắc này phải được sử dụng nếu thư mục đích không tồn tại. Chúng tôi sẽ sử dụng tùy chọn này sau trong hướng dẫn này để có thể tạo thư mục trên máy đích với dấu thời gian trong tên thư mục.
--Loại khỏi
- Công tắc này được sử dụng để liên kết đến một danh sách loại trừ có chứa các đường dẫn thư mục mà bạn không muốn sao lưu. Nó chỉ cần một tệp văn bản đơn giản với một thư mục hoặc đường dẫn tệp trên mỗi dòng.
--bao gồm từ
- Tương tự như --Loại khỏi
, nhưng nó liên kết đến một tệp chứa các thư mục và đường dẫn tệp dữ liệu bạn muốn sao lưu.
--số liệu thống kê
- Không thực sự là một công tắc quan trọng bằng bất kỳ phương tiện nào, nhưng nếu bạn là một sysadmin, có thể thuận tiện để biết số liệu thống kê chi tiết của từng bản sao lưu, để bạn có thể theo dõi lượng lưu lượng được gửi qua mạng của mình và như vậy.
--nhật ký
- Điều này cho phép bạn gửi đầu ra rsync đến một tệp nhật ký. Chúng tôi chắc chắn khuyên bạn nên điều này cho các bản sao lưu tự động mà bạn không có ở đó để tự đọc qua đầu ra. Luôn cung cấp cho các tệp nhật ký một lần trong thời gian rảnh rỗi của bạn để đảm bảo mọi thứ đều hoạt động tốt. Ngoài ra, đó là một công tắc quan trọng để sử dụng một sysadmin, vì vậy bạn sẽ không tự hỏi làm thế nào các bản sao lưu của bạn thất bại trong khi bạn rời khỏi vị trí thực tập phụ trách.
Bây giờ chúng ta hãy xem lệnh rsync của chúng tôi rằng chúng tôi có thêm một vài công tắc:
rsync -avzhP --delete --stats --log-file = / home / geek / rsynclogs / backup.log --exclude-from '/home/geek/exclude.txt' -e 'ssh -p 12345' / home / geek / files / [email protected]: / home / geek2 / files /
Lệnh vẫn còn khá đơn giản, nhưng chúng tôi vẫn chưa tạo ra một giải pháp sao lưu hợp lý. Mặc dù các tệp của chúng tôi hiện ở hai vị trí thực tế khác nhau, bản sao lưu này không bảo vệ chúng tôi khỏi một trong những nguyên nhân chính gây mất dữ liệu: lỗi của con người.
Ảnh chụp sao lưu
Nếu bạn vô tình xóa một tệp, vi-rút làm hỏng bất kỳ tệp nào của bạn hoặc điều gì khác xảy ra theo đó các tệp của bạn bị thay đổi một cách không mong muốn, và sau đó bạn chạy tập lệnh sao lưu rsync, dữ liệu được sao lưu của bạn sẽ bị ghi đè bằng các thay đổi không mong muốn. Khi điều đó xảy ra (không phải nếu, nhưng khi), giải pháp sao lưu của bạn không làm gì để bảo vệ bạn khỏi mất dữ liệu.
Người tạo ra rsync đã nhận ra điều này và thêm --sao lưu
và --sao lưu-dir
đối số để người dùng có thể chạy sao lưu vi sai. Ví dụ đầu tiên trên trang web của rsync cho thấy một tập lệnh trong đó một bản sao lưu đầy đủ được chạy cứ sau bảy ngày, và sau đó các thay đổi đối với các tệp đó được sao lưu trong các thư mục riêng hàng ngày. Vấn đề với phương pháp này là để khôi phục các tệp của bạn, bạn phải khôi phục chúng một cách hiệu quả bảy lần khác nhau. Hơn nữa, hầu hết các chuyên viên máy tính chạy các bản sao lưu của họ nhiều lần trong ngày, vì vậy bạn có thể dễ dàng có hơn 20 thư mục sao lưu khác nhau tại bất kỳ thời điểm nào. Việc khôi phục các tệp của bạn bây giờ không phải là một vấn đề khó khăn, mà ngay cả việc xem qua dữ liệu được sao lưu của bạn cũng có thể rất tốn thời gian - bạn phải biết lần cuối cùng một tệp được thay đổi để tìm bản sao được sao lưu gần đây nhất. Trên hết, nó chỉ không hiệu quả khi chỉ chạy hàng tuần (hoặc thậm chí ít thường xuyên hơn trong một số trường hợp) sao lưu gia tăng.
Ảnh chụp sao lưu để giải cứu! Sao lưu ảnh chụp nhanh không gì khác hơn là sao lưu gia tăng, nhưng chúng sử dụng các liên kết cứng để giữ lại cấu trúc tệp của nguồn ban đầu. Điều đó có thể khó khăn để quấn đầu bạn lúc đầu, vì vậy hãy xem một ví dụ.
Giả sử chúng tôi có một tập lệnh sao lưu đang chạy tự động sao lưu dữ liệu của chúng tôi cứ sau hai giờ. Bất cứ khi nào rsync thực hiện việc này, nó sẽ đặt tên cho mỗi bản sao lưu theo định dạng: Sao lưu-tháng-ngày-năm-thời gian.
Vì vậy, vào cuối một ngày thông thường, chúng tôi sẽ có một danh sách các thư mục trong thư mục đích như thế này:
Khi duyệt qua bất kỳ thư mục nào trong số đó, bạn sẽ thấy mọi tệp từ thư mục nguồn chính xác như lúc đó. Tuy nhiên, sẽ không có bản sao trên bất kỳ hai thư mục. rsync thực hiện điều này với việc sử dụng liên kết cứng thông qua --link-mệnh = TRỰC TIẾP
tranh luận.
Tất nhiên, để có những tên thư mục độc đáo và gọn gàng này, chúng ta sẽ phải tăng cường kịch bản rsync một chút. Chúng ta hãy xem những gì sẽ cần để thực hiện một giải pháp sao lưu như thế này, và sau đó chúng tôi sẽ giải thích kịch bản chi tiết hơn:
#! / bin / bash
#copy time.txt cũ thành time2.txt
vâng cp ~ / backup / time.txt ~ / backup / time2.txt
#overwrite tệp time.txt cũ với thời gian mới
tiếng vang 'ngày + + %% F-% I% p' '~ / backup / time.txt
# thực hiện tệp nhật ký
echo ăn hạ> ~ / backup / rsync-'date + '%% F-% I% p'.
Lệnh #rsync
rsync -avzhPR --chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r --delete --stats --log-file = ~ / backup / rsync-'date + pv '. log --exclude-from' ~ / Elim.txt '--link-Dest = / home / geek2 / files /' cat ~ / backup / time2.txt '-e' ssh -p 12345 '/ home / geek / files / [email protected]: / home / geek2 / files / 'date + Khăn% F-% I% p'
# đừng quên scp tệp nhật ký và đặt nó với bản sao lưu
scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / sao lưu / time.txt'.log
Đó sẽ là một kịch bản rsync chụp nhanh điển hình. Trong trường hợp chúng tôi mất bạn ở đâu đó, hãy phân tích từng mảnh một:
Dòng đầu tiên của tập lệnh của chúng tôi sao chép nội dung của time.txt thành time2.txt. Ống có là để xác nhận rằng chúng tôi muốn ghi đè lên tệp. Tiếp theo, chúng tôi dành thời gian hiện tại và đưa nó vào time.txt. Những tập tin này sẽ có ích sau.
Dòng tiếp theo tạo tệp nhật ký rsync, đặt tên là rsync-date.log (trong đó ngày là ngày và giờ thực tế).
Bây giờ, lệnh rsync phức tạp mà chúng tôi đã cảnh báo bạn về:
-avzhPR, -e, --delete, --stats, --log-file, --exclude-from, --link-Dest
- Chỉ là các công tắc chúng ta đã nói trước đó; cuộn lên nếu bạn cần làm mới.
--chmod = Du = rwx, Dgo = rx, Fu = rw, Fgo = r
- Đây là các quyền cho thư mục đích. Vì chúng tôi đang tạo thư mục này ở giữa tập lệnh rsync, chúng tôi cần chỉ định các quyền để người dùng của chúng tôi có thể ghi tệp vào đó.
Việc sử dụng lệnh ngày và mèo
Chúng ta sẽ tiếp tục sử dụng các lệnh ngày và mèo bên trong lệnh rsync, theo thứ tự chúng xảy ra. Lưu ý: chúng tôi biết rằng có nhiều cách khác để thực hiện chức năng này, đặc biệt là với việc sử dụng khai báo biến, nhưng với mục đích của hướng dẫn này, chúng tôi đã quyết định sử dụng phương pháp này.
Tệp nhật ký được chỉ định là:
~ / backup / rsync-'date + Đ %% F-% I% p '.
Ngoài ra, chúng tôi có thể đã chỉ định nó là:
~ / backup / rsync-'cat ~ / backup / time.txt'.log
Dù bằng cách nào, --nhật ký
lệnh sẽ có thể tìm thấy tệp nhật ký ngày được tạo trước đó và ghi vào nó.
Tệp đích liên kết được chỉ định là:
--link-Dest = / home / geek2 / files / 'cat ~ / backup / time2.txt'
Điều này có nghĩa là --liên kết định mệnh
lệnh được đưa ra thư mục của bản sao lưu trước. Nếu chúng tôi đang chạy các bản sao lưu cứ sau hai giờ, và đó là 4:00 chiều tại thời điểm chúng tôi chạy tập lệnh này, thì --liên kết định mệnh
lệnh tìm thư mục được tạo lúc 2:00 PM và chỉ chuyển dữ liệu đã thay đổi kể từ đó (nếu có).
Để nhắc lại, đó là lý do tại sao time.txt được sao chép vào time2.txt ở đầu tập lệnh, vì vậy --liên kết định mệnh
lệnh có thể tham chiếu thời gian đó sau.
Thư mục đích được chỉ định là:
[email protected]: / home / geek2 / files / 'ngày + Khăn% F-% I% p'
Lệnh này chỉ cần đặt các tệp nguồn vào một thư mục có tiêu đề của ngày và giờ hiện tại.
Cuối cùng, chúng tôi đảm bảo rằng một bản sao của tệp nhật ký được đặt bên trong bản sao lưu.
scp -P 12345 ~ / backup / rsync-'cat ~ / backup / time.txt'.log [email protected]: / home / geek2 / files / 'cat ~ / backup / time.txt' / rsync-'cat ~ / sao lưu / time.txt'.log
Chúng tôi sử dụng bản sao an toàn trên cổng 12345 để lấy nhật ký rsync và đặt nó vào thư mục thích hợp. Để chọn tệp nhật ký chính xác và đảm bảo rằng nó kết thúc ở đúng vị trí, tệp time.txt phải được tham chiếu qua lệnh cat. Nếu bạn đang tự hỏi tại sao chúng tôi quyết định sử dụng lệnh time.txt thay vì chỉ sử dụng lệnh date, thì đó là vì rất nhiều thời gian có thể xảy ra trong khi lệnh rsync đang chạy, vì vậy để đảm bảo chúng tôi có thời gian phù hợp, chúng tôi chỉ cần dùng mèo tài liệu văn bản chúng tôi đã tạo trước đó.
Tự động hóa
Sử dụng Cron trên Linux hoặc Trình lập lịch tác vụ trên Windows để tự động hóa tập lệnh rsync của bạn. Một điều bạn phải cẩn thận là đảm bảo rằng bạn kết thúc mọi quy trình rsync hiện đang chạy trước khi tiếp tục một quy trình mới. Trình lập lịch tác vụ dường như tự động đóng mọi phiên bản đã chạy, nhưng đối với Linux, bạn cần sáng tạo hơn một chút.
Hầu hết các bản phân phối Linux có thể sử dụng lệnh pkill, vì vậy hãy chắc chắn thêm phần sau vào đầu tập lệnh rsync của bạn:
pkill -9 rsync
Mã hóa
Không, chúng tôi chưa hoàn thành. Cuối cùng chúng tôi cũng có một giải pháp sao lưu tuyệt vời (và miễn phí!), Nhưng tất cả các tệp của chúng tôi vẫn dễ bị đánh cắp. Hy vọng rằng, bạn đang sao lưu tập tin của bạn đến một số nơi hàng trăm dặm. Cho dù nơi xa đó an toàn đến đâu, trộm cắp và hack luôn có thể là vấn đề.
Trong các ví dụ của chúng tôi, chúng tôi đã tạo đường hầm cho tất cả lưu lượng rsync của mình thông qua SSH, vì vậy điều đó có nghĩa là tất cả các tệp của chúng tôi được mã hóa trong khi chuyển đến đích của chúng. Tuy nhiên, chúng tôi cần đảm bảo đích đến an toàn. Hãy nhớ rằng rsync chỉ mã hóa dữ liệu của bạn khi nó được truyền, nhưng các tệp được mở rộng một khi chúng đến đích.
Một trong những tính năng tốt nhất của rsync là nó chỉ chuyển các thay đổi trong mỗi tệp. Nếu bạn đã mã hóa tất cả các tệp của mình và thực hiện một thay đổi nhỏ, toàn bộ tệp sẽ phải được truyền lại do mã hóa hoàn toàn ngẫu nhiên tất cả dữ liệu sau bất kỳ thay đổi nào.
Vì lý do này, tốt nhất / dễ nhất là sử dụng một số loại mã hóa đĩa, chẳng hạn như BitLocker cho Windows hoặc dm-crypt cho Linux. Bằng cách đó, dữ liệu của bạn được bảo vệ trong trường hợp bị đánh cắp, nhưng các tệp có thể được truyền bằng rsync và mã hóa của bạn sẽ không cản trở hiệu suất của nó. Có các tùy chọn khác có sẵn hoạt động tương tự như rsync hoặc thậm chí triển khai một số hình thức của nó, chẳng hạn như Sao chép, nhưng chúng thiếu một số tính năng mà rsync phải cung cấp.
Sau khi bạn đã thiết lập sao lưu ảnh chụp nhanh của mình tại một vị trí ngoại vi và mã hóa ổ đĩa cứng nguồn và đích của bạn, hãy tự vỗ lưng để làm chủ rsync và thực hiện giải pháp sao lưu dữ liệu dễ dàng nhất có thể.