Rsync --delete có an toàn trong trường hợp hỏng đĩa không


4

Tôi có hai ổ cứng dữ liệu trên máy chủ Linux của mình và tôi sử dụng thứ hai làm bản sao lưu cho ổ đĩa đầu tiên.
Tôi sử dụng rsync cho mục đích đó. Một ví dụ sẽ là:

rsync -r -v --delete /media/disk1/ /media/disk2/

Những gì nó làm là nó sao chép mọi tập tin / thư mục từ / media / đĩa1 / sang / media / đĩa2 / nhưng cũng xóa bất kỳ sự khác biệt. Ví dụ: giả sử các tệp A và B nhưng không phải tệp C nằm trên đĩa1 và trên đĩa2 không có tệp A và B, nhưng có C. Kết quả sẽ là sau lệnh trên đĩa2 tôi có tệp A và B, nhưng tệp C sẽ bị xóa, giống như trên đĩa1 .

Bây giờ, một kịch bản khá tai hại đã xuất hiện trong tâm trí tôi; những gì nếu disk1 chết, hệ thống tiếp tục làm việc kể từ khi tập tin hệ thống là trên đĩa hệ thống của tôi, nhưng khi rsync cố gắng để sao lưu dữ liệu của tôi trên disk2 từ tấm disk1 , nó sẽ xoá tất cả các file từđĩa2 vì nó không thể đọc bất cứ thứ gì trên đĩa1 .

Đây có phải là một kịch bản có thể xảy ra không, hay có sự bảo vệ nào từ nó được xây dựng trong rsync không?


Đó không phải là một bản sao lưu. Nếu dữ liệu của bạn bị hỏng / bị xóa do vi-rút / phần mềm hoặc lỗi phần cứng / lỗi của con người, lệnh của bạn sẽ đảm bảo dữ liệu cũng bị hỏng / bị xóa trên ổ đĩa thứ hai.
gronostaj

Bài này đã cũ, nhưng tôi đến đây cũng nghĩ về điều này. Có một cách dễ dàng để hạn chế rsync? Ý tôi là, nếu / media / đĩa2 / khác hơn 50% so với / media / đĩa1 /, thì không làm gì cả.
TNT

Câu trả lời:


4

Trên thực tế, trong kịch bản đó, kernel sẽ phát điên và bạn sẽ nhận được một loạt các lỗi I / O đĩa trước khi rsync xóa bất cứ điều gì. Nhưng sau đó nếu bạn khởi động lại, có thể / media / đĩa1 sẽ trống và không thể đếm được ... Vì vậy ...

Trong tập lệnh rsync của bạn, chỉ cần đảm bảo rằng bạn không chạy rsync nếu không có bất kỳ tệp nào trong / media / đĩa1. Một cách dễ dàng để làm điều đó sẽ là:

ls /media/disk1/SomeFileYouKnowExists || exit
rsync ....

Điều này sẽ khiến tập lệnh thoát ra trước khi chạy rsync trong trường hợp tệp mục tiêu không tồn tại.


Tôi đã từng bị lỗi một đĩa trong cài đặt LVM và máy chủ tiếp tục hoạt động vì vậy tôi sẽ không đặt cược vào kernel, có lẽ điều này xảy ra nếu đĩa hệ thống bị lỗi. <br> Đối với mã bạn đã đề nghị tôi sao lưu số lượng lớn tệp thay đổi và tôi không thể theo dõi tất cả các thay đổi.
enedene

Đó là bởi vì khi một đĩa đơn trong LVM bị lỗi, (các) đĩa khác có thể tiếp tục phân phát dữ liệu và hạt nhân có thể không nhận thấy cho đến khi nó cố đọc dữ liệu từ đĩa bị lỗi.
Flimzy

Tôi cũng có vẻ như có lẽ rsync không phải là công cụ phù hợp với công việc của bạn - bạn có thể tốt hơn với một ứng dụng sao lưu thực sự .
Flimzy

@Flimzy, bạn có thể đúng về LVM nhưng tôi không thể chắc chắn điều này cũng sẽ xảy ra với đĩa không hệ thống, vì nó chưa xảy ra. rsync hiện đang làm tốt công việc, đó là lý do tại sao tôi hỏi liệu có nguy hiểm gì không, nếu không tôi sẽ tiếp tục sử dụng nó bởi vì nó dễ dàng và thiết thực với tôi. Tôi cũng sẽ không ngạc nhiên nếu các giải pháp phức tạp hơn sử dụng rysnc trong nền.
enedene

1
Chắc chắn, một số hệ thống sao lưu có thể sử dụng rsync làm phương thức chuyển, nhưng đó không phải là lý do để tin tưởng rsync cho các bản sao lưu có giá trị. Điều đó giống như nói rằng "Một số hệ thống sao lưu sử dụng HTTP, vì vậy tôi sẽ chỉ tải các tệp của mình lên Gmail qua HTTP làm phương thức sao lưu của mình." Một hệ thống sao lưu "thực" sẽ cung cấp các bản sao lưu và lịch sử được phiên bản - điều này sẽ khiến câu hỏi của bạn thực sự bị lỗi thời. :)
Flimzy

3

Từ hướng dẫn rsync:

Nếu phía gửi phát hiện bất kỳ lỗi I / O nào, thì việc xóa bất kỳ tệp nào tại đích sẽ tự động bị vô hiệu hóa. Điều này là để ngăn chặn các lỗi hệ thống tệp tạm thời (chẳng hạn như lỗi NFS) ở phía gửi gây ra việc xóa rất nhiều tệp ở đích. Bạn có thể ghi đè lên điều này bằng tùy chọn --ignore-error.


1
Điều này có bao gồm tất cả các lỗi ổ đĩa có thể xảy ra không, hay chỉ khi có lỗi nghiêm trọng? <br> Lỗi đĩa có thể lạ, bạn có thể xem danh sách một số tệp, nhưng một phần của nó có thể bị hỏng, v.v.
enedene
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.