Tôi dự định sao lưu các ổ cứng lớn của mình rsync
và 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 rsync
hoàn thành?
Tôi dự định sao lưu các ổ cứng lớn của mình rsync
và 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 rsync
hoàn thành?
Câu trả lời:
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/source
nên làm.)
@reboot root find / -print &>/dev/null
trong 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.
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?
Đ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, rsync
sẽ 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.
rsync
sẽ 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 đó.
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 rsync
tạo / cập nhật có thể không nhất quán:
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.
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 rsync
toà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.
Trong một số trường hợp rsync
sẽ 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.
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.
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ư dd
sao 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 dd
nê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%.
dd
không phải là sự lựa chọn tốt nhất. Sử dụng ddrescue
thay 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.