OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Đồng bộ hóa tệp và thư mục

Chiến lược phổ biến để duy trì bản sao lưu của hệ thống bao gồm việc giữ một hoặc nhiều thư mục được đồng bộ hóa với một thư mục (hoặc các thư mục) khác nằm trên hệ thống cục bộ (thường là một thiết bị lưu trữ di động thuộc một số loại) hoặc một hệ thống từ xa. Ví dụ, chúng tôi có thể có một bản sao cục bộ của một trang web đang được phát triển và thỉnh thoảng đồng bộ hóa nó với bản sao “trực tiếp” trên một máy chủ web từ xa.

Trong thế giới giống Unix, công cụ ưu tiên cho tác vụ này là rsync. Chương trình này có thể đồng bộ hóa cả thư mục cục bộ và thư mục từ xa bằng cách sử dụng giao thức cập nhật từ xa rsync, cho phép rsync để nhanh chóng phát hiện sự khác biệt giữa hai thư mục và tạo ra số lượng sao chép tối thiểu cần thiết để đưa chúng vào đồng bộ. Điều này làm cho rsync rất nhanh và tiết kiệm để sử dụng, so với các loại chương trình sao chép khác.

rsync được gọi như thế này:

rsync tùy chọn nguồn đích

Ở đâu nguồn điểm đến là một trong những điều sau:


● Tệp hoặc thư mục cục bộ

● Tệp hoặc thư mục từ xa ở dạng [user @] host: path

● Máy chủ rsync từ xa được chỉ định với URI là rsync: // [user @] host [: port] / path

Lưu ý rằng nguồn hoặc đích phải là tệp cục bộ. Sao chép từ xa đến xa không được hỗ trợ.

Hãy thử rsync trên một số tệp cục bộ. Đầu tiên, chúng ta hãy làm sạch foo danh mục:


[tôi @ linuxbox ~] $ rm -rf foo / *

[tôi @ linuxbox ~] $ rm -rf foo / *


Tiếp theo, chúng tôi sẽ đồng bộ hóa sân chơi thư mục với một bản sao tương ứng trong foo:


[tôi @ linuxbox ~] $ rsync -av sân chơi foo

[tôi @ linuxbox ~] $ rsync -av sân chơi foo


Chúng tôi đã bao gồm cả -a tùy chọn (để lưu trữ-gây ra đệ quy và duy trì các thuộc tính tệp) và -v tùy chọn (đầu ra dài dòng) để thực hiện một gương của sân chơi thư mục trong foo. Trong khi lệnh chạy, chúng ta sẽ thấy danh sách các tệp và tệp trực tiếp đang được sao chép. Ở cuối, chúng ta sẽ thấy một thông báo tóm tắt như sau:



gửi 135759 byte nhận được 57870 byte 387258.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.02

gửi 135759 byte nhận được 57870 byte 387258.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.02


cho biết số lượng sao chép được thực hiện. Nếu chúng ta chạy lại lệnh, chúng ta sẽ thấy một kết quả khác:



[tôi @ linuxbox ~] $ rsync -av playgound foo

xây dựng danh sách tệp ... đã xong


gửi 22635 byte nhận được 20 byte 45310.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.14

[tôi @ linuxbox ~] $ rsync -av playgound foo

xây dựng danh sách tệp ... đã xong


gửi 22635 byte nhận được 20 byte 45310.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.14


Lưu ý rằng không có danh sách các tập tin. Điều này là bởi vì rsync phát hiện rằng không có sự khác biệt giữa ~ / sân chơi ~ / foo / sân chơi, và do đó nó không cần sao chép bất cứ thứ gì. Nếu chúng tôi sửa đổi một tệp trong sân chơi và chạy rsync lần nữa:


[tôi @ linuxbox ~] $ chạm sân chơi / dir-099 / file-Z [tôi @ linuxbox ~] $ rsync -av sân chơi foo xây dựng danh sách tệp ... đã xong

sân chơi / dir-099 / file-Z

gửi 22685 byte nhận được 42 byte 45454.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.14

[tôi @ linuxbox ~] $ chạm sân chơi / dir-099 / file-Z [tôi @ linuxbox ~] $ rsync -av sân chơi foo xây dựng danh sách tệp ... đã xong

sân chơi / dir-099 / file-Z

gửi 22685 byte nhận được 42 byte 45454.00 byte / giây tổng kích thước là 3230 tốc độ tăng là 0.14


chúng ta thấy rằng rsync đã phát hiện thay đổi và chỉ sao chép tệp đã cập nhật.

Như một ví dụ thực tế, hãy xem xét ổ cứng ngoài tưởng tượng mà chúng tôi đã sử dụng tar. Nếu chúng tôi gắn ổ đĩa vào hệ thống của mình và một lần nữa, ổ đĩa được gắn vào / me- dia / BigDisk, chúng tôi có thể thực hiện sao lưu hệ thống hữu ích bằng cách tạo một thư mục có tên là /sao lưu trên ổ đĩa ngoài, và sau đó sử dụng rsync để sao chép những thứ quan trọng nhất từ ​​hệ thống của chúng tôi sang ổ đĩa ngoài:



[tôi @ linuxbox ~] $ mkdir / media / BigDisk / backup

[tôi @ linuxbox ~] $ sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup

[tôi @ linuxbox ~] $ mkdir / media / BigDisk / backup

[tôi @ linuxbox ~] $ sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup


Trong ví dụ này, chúng tôi đã sao chép / Etc, / Home/ usr / local thư mục từ hệ thống của chúng tôi đến thiết bị lưu trữ tưởng tượng của chúng tôi. Chúng tôi đã bao gồm --xóa bỏ tùy chọn loại bỏ các tệp có thể đã tồn tại trên thiết bị sao lưu mà không còn tồn tại trên thiết bị nguồn (điều này không liên quan trong lần đầu tiên chúng tôi tạo sao lưu, nhưng sẽ hữu ích trong các bản sao tiếp theo). Lặp lại quy trình gắn ổ đĩa ngoài và chạy nó rsync lệnh sẽ là một cách hữu ích (mặc dù không lý tưởng) để giữ một hệ thống nhỏ được sao lưu. Tất nhiên, một bí danh cũng sẽ hữu ích ở đây. Chúng tôi có thể tạo một bí danh và thêm nó vào

.bashrc tệp để cung cấp tính năng này:


alias backup = 'sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup '

alias backup = 'sudo rsync -av --delete / etc / home / usr / local

/ media / BigDisk / backup '


Bây giờ, tất cả những gì chúng ta phải làm là gắn ổ đĩa ngoài và chạy sao lưu lệnh để thực hiện công việc.


 

Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: