Có an toàn khi sử dụng ổ cứng trong khi rsync đang chạy không?


27

Tôi dự định sao lưu các ổ cứng lớn của mình rsyncvà dự đoán sẽ mất vài ngày. Có an toàn khi sử dụng ổ cứng ban đầu (thêm tệp) trong khi rsyncđang hoạt động không? Hoặc tốt hơn là để các ổ cứng không bị ảnh hưởng cho đến khi rsynchoàn thành?


1
Lưu ý rằng "sử dụng" có thể đơn giản như mở trình duyệt không làm gì cả. Các trình duyệt có xu hướng viết rất nhiều thứ ngẫu nhiên trong các thư mục dữ liệu của họ. Trong trường hợp xấu nhất, những gì bạn nhận được là một bản sao lưu không nhất quán, tức là khi khôi phục, bạn có thể không thể khôi phục các tab của mình, dấu trang của bạn có thể bị mất (vì cơ sở dữ liệu bị hỏng) hoặc thứ gì đó có độ lớn.
Jonas Schäfer

Nếu bạn có nhiều dữ liệu để sao lưu, bạn có thể muốn xem xét việc chia bản sao lưu thành các phần nhỏ hơn (cây con). Sau đó, chỉ có phần hiện đang chạy cần được giữ tĩnh nhất có thể - và bạn có thể xem phần nào bằng cách theo dõi tiến trình của tập lệnh của bạn (với nhật ký, v.v.). Vì nó không phải là một bản sao lưu lớn, một số phần có thể không đồng bộ với các phần khác, nhưng nếu bạn đang chạy một bản sao lưu lớn trên hệ thống trực tiếp, điều đó sẽ xảy ra.
Joe

Câu trả lời:


34

Như những người khác đã chỉ ra, việc đọc từ đĩa nguồn hoặc sử dụng đĩa đích bên ngoài thư mục đích là an toàn, trong khi rsync đang chạy. Nó cũng an toàn để đọc trong thư mục đích, đặc biệt nếu thư mục đích đang được điền riêng bởi chạy rsync.

Điều không thường an toàn là viết trong thư mục nguồn trong khi rsync đang chạy. "Writes" là bất cứ điều gì sửa đổi nội dung của thư mục nguồn hoặc bất kỳ thư mục con nào trong đó, bao gồm cập nhật tệp, xóa, tạo, v.v.

Làm như vậy sẽ không thực sự phá vỡ bất cứ điều gì, nhưng thay đổi có thể hoặc không thực sự được chọn bởi rsync để sao chép vào vị trí mục tiêu. Điều đó phụ thuộc vào loại thay đổi, liệu rsync đã quét thư mục cụ thể đó chưa và liệu rsync đã sao chép tệp hoặc thư mục được đề cập chưa.

Tuy nhiên, có một cách dễ dàng xung quanh đó là: Sau khi hoàn thành, hãy chạy lại rsync, với cùng tham số. (Trừ khi bạn có một số tham số xóa thú vị; nếu bạn làm như vậy, thì hãy cẩn thận hơn một chút.) Làm như vậy sẽ khiến nó quét lại nguồn và chuyển bất kỳ sự khác biệt nào không nhận được trong quá trình chạy ban đầu.

Lần chạy thứ hai chỉ nên chuyển những khác biệt đã xảy ra trong lần chạy rsync trước đó và như vậy sẽ hoàn thành nhanh hơn nhiều. Do đó, bạn có thể thoải mái sử dụng máy tính bình thường trong lần chạy đầu tiên, nhưng nên tránh càng nhiều càng tốt để thực hiện bất kỳ thay đổi nào đối với nguồn trong lần chạy thứ hai. Nếu bạn có thể, hãy cân nhắc mạnh mẽ việc xem lại hệ thống tệp nguồn chỉ đọc trước khi bắt đầu chạy rsync thứ hai. (Một cái gì đó như mount -o ro,remount /media/sourcenên làm.)


7
Một người thậm chí có thể thực hiện lần chạy thứ ba sau lần chạy thứ hai: có thể mất ít thời gian hơn ... ;-)
gerlos

5
@gerlos Một mô hình dường như đang nổi lên. Nghe có vẻ như người ta chỉ có thể tiếp tục chạy lệnh rsync vào cuối mỗi phiên sử dụng và trong vài ngày, nó sẽ được thực hiện nhanh chóng.
Monty Harder

5
@gerlos Nếu bạn chỉ đọc lại trước khi chạy rsync lần thứ hai, điều đó sẽ không cần thiết và bản sao lưu sẽ được đảm bảo nhất quán trong khi giảm thiểu thời gian mà bạn không thể ghi vào hệ thống tệp nguồn.
CVn

1
@gerlos Là một bên, đó là lý do tại sao tôi có một mục giống như @reboot root find / -print &>/dev/nulltrong crontab hệ thống của tôi, để điền vào bộ đệm. (Mục thực tế phức tạp hơn khi tính đến một vài trường hợp đặc biệt trên hệ thống cụ thể của tôi.) Nó sử dụng một số RAM và thời gian chờ giờ sớm sau khi khởi động để cải thiện quét cây thư mục khá một chút IME.
CVn

1
@ MichaelKjorling: ý tưởng xen kẽ để lưu trữ thứ bậc. Nhưng có lẽ bạn nên chạy updatedb(xây dựng cơ sở dữ liệu định vị) hoặc slocate -u(tương tự, nếu bạn có slocate) thay vào đó? Bằng cách đó, bạn vẫn lưu trữ cấu trúc phân cấp nhưng bạn cũng xây dựng cơ sở dữ liệu định vị hoặc định vị, cho phép bạn sử dụng các lệnh đó để nhanh chóng tìm thấy nhiều tệp?
Olivier Dulac

22

Điều này phụ thuộc vào hệ thống sao lưu bạn sử dụng, nhưng nói chung, việc sửa đổi nội dung của thiết bị trong khi bạn sao lưu thiết bị là một ý tưởng tồi . Tuy nhiên, bạn có thể đọc nội dung của nó; đó là một hoạt động an toàn, ngay cả khi nó sẽ làm chậm quá trình.

Trong trường hợp của bạn, rsyncsẽ xây dựng một danh sách tập tin và sau đó bắt đầu sao lưu. Do đó, mọi tệp bạn thêm vào ổ cứng nguồn sau khi sao lưu đã bắt đầu sẽ không được sao chép.

Những gì tôi làm là không sử dụng một thiết bị nào trong quá trình sao lưu. Đây là cách an toàn hơn để có được một bản sao lưu nhanh và nhất quán.


14
Tôi thường để nó chạy và sau đó thực hiện lần chạy thứ hai rsyncsẽ hoàn thành sau vài giây vì chỉ các tệp mà tôi đã thay đổi trong quá trình chạy sẽ được sao chép. Tất cả mọi thứ sẽ ở trong bộ nhớ cache, vì vậy cách dễ dàng hơn để kiềm chế các sửa đổi trong khoảng thời gian đó.
Martin Uting

15

Có thể an toàn để đọc dữ liệu từ các khu vực nguồn trong khi rsyncđang hoạt động, nhưng nếu bạn cập nhật bất cứ điều gì thì bản sao rsynctạo / cập nhật có thể không nhất quán:

  1. Nếu bạn cập nhật một tệp mà rsync đã quét thì nó sẽ không thấy bản cập nhật cho đến khi chạy trong tương lai. Nếu bạn cập nhật một tệp, nó vẫn chưa quét, thay đổi sẽ được tôn trọng ở đích. Nếu bạn cập nhật các tệp mà cả hai đã và chưa được quét, bạn sẽ kết thúc với sự pha trộn giữa các phiên bản cũ và mới ở đích.

  2. Nếu bạn thêm một tập tin vào một thư mục đã được quét, nó sẽ bị bỏ lỡ từ bản sao đích trong khoảng thời gian này. Nếu bạn xóa một tập tin khỏi một thư mục đã được quét, nó sẽ được để lại trong bản sao đích lần này. Tùy thuộc vào cách bạn gọi rsynctoàn bộ cây có thể được quét khi bắt đầu hoặc nó có thể được quét tăng dần khi quá trình đồng bộ hóa xảy ra.

  3. Trong một số trường hợp rsyncsẽ thấy sự không nhất quán và cảnh báo bạn. Nếu bạn xóa một tập tin hoặc thư mục con khỏi một thư mục đã được quét nhưng chưa quét nội dung của nó, bạn sẽ nhận được thông báo lỗi về đối tượng bị thiếu. Trong trường hợp tương tự, đôi khi có thể (nếu kích thước và / hoặc dấu thời gian đã thay đổi) cũng cảnh báo về các tệp thay đổi giữa quét.

Đối với một số bản sao lưu, sự không nhất quán này có thể không phải là một vấn đề lớn, nhưng đối với hầu hết nó sẽ là do đó bạn không nên thử đồng bộ hóa một nguồn thay đổi tích cực.

Nếu bạn sử dụng LVM để chia phần hệ thống lưu trữ của mình, bạn có thể sử dụng ảnh chụp nhanh tạm thời để sao lưu tại thời điểm. Điều này yêu cầu bạn có đủ không gian trên nhóm âm lượng để tạo âm lượng ảnh chụp đủ lớn để chứa tất cả các thay đổi sẽ xảy ra trong khoảng thời gian cần chụp nhanh. Kiểm tra tài liệu LVM (hoặc một trong nhiều ví dụ trực tuyến: tìm kiếm "sao lưu ảnh chụp nhanh LVM" hoặc tương tự) để biết thêm chi tiết.

Ngay cả khi không có LVM, một số hệ thống tập tin cũng hỗ trợ ảnh chụp nhanh - vì vậy bạn cũng có thể muốn xem xét tùy chọn đó.

Nếu bạn muốn sao lưu khối lượng hoạt động lớn mà không có thời gian chết lâu và không thể sử dụng ảnh chụp nhanh, có thể đủ để chạy quét "trực tiếp" để hoàn tất, sau đó dừng truy cập vào ổ đĩa và chạy một quy trình rsync khác có thể mất ít thời gian hơn (nếu Rất ít thay đổi, nó sẽ chỉ quét cây thư mục sau đó vài tập tin được cập nhật). Bằng cách này, thời lượng mà bạn nên tránh thay đổi có thể ngắn hơn nhiều.


Tôi thích câu trả lời của bạn nhất vì bạn đi vào chi tiết về những gì sẽ xảy ra nếu các tệp được sửa đổi. Bạn không chỉ cung cấp một giải pháp thay thế mà còn giải quyết sự không nhất quán mà nó có thể gây ra (thiếu bản cập nhật, cảnh báo về một tệp bị thiếu, v.v.). Trong tình huống của tôi, sử dụng rsync để tạo một bản sao lưu dài và sau đó làm mới nó vài ngày sau đó không phải là vấn đề lớn và điều đó cũng giống như tình huống của OP. Có vẻ như anh ấy / cô ấy không yêu cầu sao lưu cấp doanh nghiệp lần đầu tiên, nhưng chỉ muốn sử dụng máy tính trong thời gian trung bình. Tôi nói chỉ cần chạy rsync lần thứ hai để bắt các tệp được cập nhật.
ibennetch

11
  • Nguồn HDD có thể đọc bất cứ thứ gì trong khi rsync.

  • Nguồn HDD có thể viết bất kỳ nội dung nào không liên quan đến nội dung rsync.

  • HDD đích có thể đọc bất cứ thứ gì trong khi rsync.

  • HDD đích có thể ghi bất cứ điều gì trong khi rsync với điều kiện có đủ dung lượng dành riêng cho nội dung được đồng bộ hóa.

Tất nhiên, trong bất kỳ trường hợp nào, sẽ có hiệu suất giảm.


0

Tất cả các câu trả lời hiện tại đang nói về an toàn dữ liệu về tính nhất quán và giả định phần cứng hoàn hảo.

Một điều khác cần xem xét là sự an toàn phần cứng chính nó. Nếu bạn có các ổ đĩa cứng không được sao lưu có thể sắp bị hỏng (thậm chí bạn có thể chưa biết) và bạn đang tạo bản sao lưu toàn diện ban đầu, đừng sử dụng nó. Thậm chí không gắn kết nó nếu dữ liệu quan trọng. Bạn có thể sử dụng một công cụ như ddsao chép đĩa dưới dạng thiết bị khối. Những gì bạn không muốn đầu đĩa tìm kiếm và có thể viết trong khi bạn đang cố gắng tạo bản sao lưu. Plus ddnên nhanh hơn cho bản sao lưu ban đầu vì nó chỉ sao chép các bit theo thứ tự (Nếu ổ đĩa không đầy đủ, tôi cho rằng rsync cũng sẽ giành chiến thắng trong trường hợp ban đầu).

Đối với các bản sao lưu gia tăng tiếp theo, rsync là một lựa chọn tuyệt vời và tôi đồng ý với các câu trả lời khác 100%.


1
Nếu phương tiện truyền thông là cận biên hoặc thậm chí có khả năng cận biên, ddkhông phải là sự lựa chọn tốt nhất. Sử dụng ddrescuethay thế; nó xử lý một phần thất bại tốt hơn nhiều. Nhưng đó không phải là một sự cân nhắc trong câu hỏi ban đầu.
một CVn

@ MichaelKjorling Đó là một điểm tốt.
Zak
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.