Là sử dụng rsync trong khi nguồn đang được cập nhật an toàn?


19

Có an toàn để sử dụng rsynckhi hệ thống tập tin nguồn được gắn kết và có thể ghi, giả sử rằng nó rất có thể được sửa đổi trong khi rsync đang chạy? Tôi cho rằng trong điều kiện chủng tộc tôi có thể không nhận được những sửa đổi mới nhất, nhưng liệu có nguy cơ tham nhũng không?


1
Bạn có lo ngại về tính nhất quán (giữa các tệp, chẳng hạn như tệp dữ liệu và một số tệp siêu dữ liệu được liên kết, nhật ký hoặc một số tệp như vậy) hoặc hỏng (trong một tệp) trong trường hợp thay đổi không?
một CVn

Điểm hay, tôi đã không xem xét tính nhất quán giữa các tệp. Tôi không cho rằng rsyncthực sự có thể làm bất cứ điều gì về điều đó, chỉ có một ảnh chụp nhanh, nhưng tôi lo lắng hơn về tham nhũng trong một tập tin.
brianmearn

Câu trả lời:


20

Sử dụng rsynckhá an toàn trên các hệ thống tập tin gắn đọc-ghi. Khi rsyncđược bắt đầu, nó sẽ tạo một danh sách tệp và sau đó bắt đầu sao chép các tệp đó. Danh sách tập tin này không được cập nhật trong quá trình chạy. Dữ liệu thực tế sau đó được sao chép.

Điều này có nghĩa là khi một tệp thay đổi sau khi rsync đã xây dựng danh sách tệp, nó sẽ sao chép nội dung mới . Tuy nhiên, khi một tệp mới được thêm vào sau khi rsyncđã xây dựng danh sách tệp của nó, tệp mới này không được sao chép. Nếu một tệp bị xóa sau khi rsyncđã tạo danh sách các tệp, rsync sẽ cảnh báo rằng nó không thể sao chép tệp đó. Hãy nhớ rằng đó rsynckhông phải là ảnh chụp nhanh, điều này có nghĩa là thật khó để biết được tại thời điểm nào đã rsyncsao chép dữ liệu.

Ảnh chụp nhanh hệ thống tệp hoặc trình quản lý âm lượng (ví dụ: sử dụng ZFS hoặc LVM), mặt khác, được tạo ngay lập tức và là ảnh chụp nhanh nhất quán của hệ thống tệp tại một thời điểm được xác định rõ sau đó có thể được sao chép sang máy chủ khác. rsynckhông cung cấp loại nhất quán này.

EDIT: Như những người khác đã chỉ ra trong các bình luận, có khả năng rsyncthực sự có thể làm hỏng tệp của bạn. Khi rsync bắt đầu đọc một tệp và một ứng dụng đang ghi tệp đó cùng một lúc, bạn có thể kết thúc với một tệp bị hỏng.


2
Đã thêm một ghi chú trên các tập tin bị xóa. Có lẽ sẽ cung cấp cho upvote này một lần nữa nếu tôi có thể cho đề xuất snapshot + rsync của trình quản lý âm lượng. Điều duy nhất tôi cảm thấy thiếu câu trả lời này là hành vi của rsync khi các tệp trên nguồn được thay đổi ở giữa khi được sao chép. Tôi nghi ngờ rằng nó xử lý tốt, mặc dù.
một CVn

Đã đồng ý. Nếu bạn muốn các tệp nhất định là nhất quán, bạn cần hỗ trợ hệ điều hành?
Thorbjørn Ravn Andersen

1
Câu trả lời này được áp dụng với điều kiện là ứng dụng ở phía nguồn trước tiên ghi vào một tệp tạm thời, sau đó di chuyển nó vào vị trí. Nếu ứng dụng mở tệp hiện có để ghi trong khi rsync tình cờ đọc tệp đó, rsync có thể sao chép hỗn hợp bị hỏng của phiên bản cũ và phiên bản mới.
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Cảm ơn bạn đã chỉ ra điều đó. Tôi cập nhật câu trả lời của tôi. Điều này có liên quan đến rsync hay điều này xảy ra với bất kỳ ứng dụng nào đọc trong khi ứng dụng khác ghi vào cùng một tệp?
Marco

1
@Marco Điều đó sẽ xảy ra với bất kỳ ứng dụng nào, trừ khi cả hai sử dụng một số giao thức khóa (unix không có khóa bắt buộc, chỉ có khóa tư vấn, tức là khóa chỉ hoạt động nếu mọi người đang sử dụng chúng). Đó là lý do tại sao giao thức bình thường để sửa đổi một tệp nếu sửa đổi đồng thời là mối quan tâm là viết một tệp tạm thời sau đó di chuyển nó vào vị trí.
Gilles 'SO- ngừng trở nên xấu xa'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.