Nhân bản ổ đĩa đơn vào nhiều ổ đĩa cùng một lúc


12

Tôi đang tìm cách sao chép ổ đĩa đơn vào nhiều ổ đĩa cùng một lúc.

Tôi đã chuẩn bị hình ảnh hệ thống trên các đĩa 1TB và phải mất gần 2 giờ để sao chép hết đĩa này sang đĩa khác, và sau đó nó tăng theo cấp số nhân, để có thể nói 30 đĩa được sao chép.

Nếu có thể sao chép một đĩa vào nhiều mục tiêu, nó sẽ đơn giản hóa toàn bộ thủ tục rất nhiều.

Ngoài ra, có một cái gì đó ngăn chặn loại hoạt động này? Ý tôi là, có một số lý do đặc biệt tại sao mọi phần mềm nhân bản đĩa mà tôi biết về chỉ hỗ trợ ổ đĩa đích?

Cảm ơn!

Câu trả lời:


17

Bạn có thể sử dụng "thay thế quy trình" của bash cùng với lệnh tee để thực hiện việc này:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

hoặc để rõ ràng (với chi phí hiệu quả một chút), bạn có thể thực hiện lần cuối cùng ddđược gọi giống như cách khác và gửi tiêu chuẩn của tee đến / dev / null:

cat drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) >(dd of=/dev/sdd) | /dev/null

và nếu bạn đã cài đặt nó, bạn có thể sử dụng trình xem đường ống thay vì catđể có được một chỉ báo tiến trình hữu ích:

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

Điều này chỉ đọc hình ảnh nguồn một lần, do đó, ổ đĩa nguồn bị đập đầu, đó có thể là lý do khiến bạn thấy chậm theo cấp số nhân khi bạn thử sao chép hình ảnh nhiều lần bằng các phương pháp khác. Sử dụng teenhư trên, các quy trình sẽ chạy ở tốc độ của ổ đĩa đích chậm nhất.

Nếu bạn có các ổ đĩa đích được kết nối qua USB, hãy lưu ý rằng tất cả chúng có thể đang chia sẻ băng thông xe buýt, vì vậy việc viết nhiều song song có thể không nhanh hơn việc ghi chúng theo tuần tự vì bus USB trở thành nút cổ chai không phải là ổ đĩa nguồn hoặc đích.

Ở trên giả định rằng bạn đang sử dụng Linux hoặc tương tự (nó cũng hoạt động trên OSX mặc dù tên thiết bị có thể khác), nếu bạn đang sử dụng Windows hoặc một cái gì đó khác thì bạn cần một giải pháp khác.

Biên tập

Hình ảnh qua mạng có một vấn đề tương tự như chụp ảnh nhiều ổ đĩa qua USB - kênh truyền tải trở thành nút cổ chai thay vì các ổ đĩa - trừ khi phần mềm bạn sử dụng hỗ trợ một số hình thức truyền phát hoặc phát đa hướng.

Đối với ddphương thức, bạn có thể có thể xử lý chuỗi netcat+ tee+ ddtrên mỗi máy như vậy:

  1. Máy nguồn cat/ pv/ dds dữ liệu thông qua ncmáy đích 1.
  2. Máy đích 1 đã nclắng nghe dữ liệu từ máy nguồn và chuyển nó qua teeđó lần lượt gửi nó đến dd(và như vậy vào đĩa) và một ncquá trình khác gửi đến máy đích 2.
  3. Máy đích 2 đã nclắng nghe dữ liệu từ máy đích 1 và chuyển nó qua teeđó lần lượt gửi nó đến dd(và như vậy vào đĩa) và một ncquá trình khác gửi đến máy đích 3.
  4. và cứ như vậy cho đến khi máy cuối cùng vừa nclấy dữ liệu từ máy trước đó và gửi nó vào đĩa qua dd.

Bằng cách này, bạn có khả năng sử dụng băng thông mạng đầy đủ của mình với giả định rằng tất cả các thiết bị chuyển mạch và thẻ mạng của bạn đã đàm phán một liên kết song công hoàn toàn. Thay vì máy nguồn gửi 10 bản sao dữ liệu (giả sử 10 máy đích), mỗi máy bị giới hạn ở 1/10 băng thông đi, nó chỉ gửi 1. Mỗi máy đích đang lấy một bản sao của dữ liệu và gửi đi lần nữa. Bạn có thể cần phải tinh chỉnh các thiết lập kích thước bộ đệm của pv, ncddđể có được gần gũi hơn với hiệu suất thực tế tốt nhất.

Nếu bạn có thể tìm thấy một số phần mềm chỉ hỗ trợ phát đa hướng, điều đó sẽ dễ dàng hơn nhiều (và có thể nhanh hơn một chút)! Nhưng trên đây là loại giải pháp hack mà tôi có thể đủ để thử ...

Chỉnh sửa lại

Một suy nghĩ khác. Nếu hình ảnh ổ đĩa nén tốt (sẽ như vậy nếu các khối lớn của nó chứa đầy số không) thì băng thông đi của máy nguồn không cần phải là vấn đề ngay cả khi gửi đến nhiều đích cùng một lúc. Chỉ cần nén hình ảnh trước, truyền hình ảnh đó đến mọi nơi bằng cách sử dụng tee+ ncvà giải nén trên các đích (mạng-> nc-> bộ giải nén-> dd-> đĩa).


Cảm ơn đã giải thích sâu sắc về quá trình. Nó thực sự hữu ích. Tôi đang khám phá các tùy chọn nhân bản mạng ngay bây giờ (sử dụng phát đa hướng) và nếu thất bại, tôi sẽ khám phá thêm vectơ DD này.
ông

Bạn đã không nói rằng các ổ đĩa được gắn vào các máy tính khác nhau ... điều đó làm cho mọi thứ hoàn toàn khác nhau!
marcusw

Điều này đến gần nhất với cả máy tính cục bộ và mạng máy tính trùng lặp một-nhiều đĩa cùng một lúc. Cảm ơn đã giải thích sâu sắc!
mr.b

Đối với các tùy chọn nhân bản mạng dựa trên Linux, bạn có thể muốn xem xét Clonezilla. Nó có thể sao chép thông qua phát đa hướng cũng như một số tùy chọn nhân bản cục bộ bao gồm DD.
dùng35060

5

Câu trả lời đầu tiên trên google được đề xuất (trên hệ thống Linux) : dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde), trong đó / dev / sdb là ổ cứng bạn muốn sao chép và / dev / sdc, / dev / sdb và / dev / sde là các ổ đĩa để sao chép (bạn có thể thêm nhiều hơn những thứ bạn muốn, chỉ cần copypaste). Một LiveCD nên làm điều đó, và nhớ cẩn thận với các ký tự ổ đĩa của bạn!


1
Thật. Tôi đã làm một số nghiên cứu trước khi đặt câu hỏi này, nhưng tôi thích nghe người khác trải nghiệm. DD là một tiện ích nhỏ tuyệt vời, nhưng: 1) nó thiếu nhận thức về nội dung dữ liệu thực tế (nó cũng sẽ sao chép không gian trống, theo từng khu vực) và 2) ai đó đã báo cáo các vấn đề về hiệu suất khi thực hiện sao chép nhiều hơn một ổ đĩa theo cách này Còn ý tưởng nào nữa không?
mr.b

"[...] Trong đó / dev / sdb là ổ cứng bạn muốn sao chép và / dev / sdc, / dev / sdb và / dev / sde là các ổ đĩa để sao chép vào [...]" ---> "[...] và nhớ cẩn thận với ký tự ổ đĩa của bạn!" : DI đồng ý !!!
dag729

1
@ mr.b: 1) Trong suy nghĩ của tôi, một bản sao bit-bit là tốt hơn so với việc sử dụng các phím tắt nguy hiểm tiềm tàng. 2) Meh, cách tốt nhất tôi có thể nghĩ đến là làm rối tung nguồn dd để sao chép đồng thời vào nhiều vị trí, nhưng sẽ nhanh hơn nếu chỉ sao chép một cách chậm chạp.
marcusw

Bạn có chắc chắn về of=-? Việc chỉ tạo một -tệp đầu ra thay vì xuất ra thiết bị xuất chuẩn cho tôi. Điều này có thể được giải quyết bằng cách bỏ qua oftùy chọn.
từ đó

Sử dụng "tee" theo cách đó sẽ không hoạt động. Vui lòng xem: joshhead.wordpress.com/2011/08/04/ khăn
user35060

2

Tất cả những gì tôi biết là có một số thứ gọi là Sao chép ổ cứng. Đây là những Thiết bị đặc biệt để sao chép (sao chép) HD thành nhiều Ổ đĩa cùng một lúc. Có lẽ bài viết này giúp bạn.


Vâng, tôi biết sự tồn tại của các thiết bị này; tuy nhiên, chúng là tất cả mọi thứ, nhưng giá rẻ, đặc biệt là trong trường hợp không có ngân sách của tôi :( Tuy nhiên, cảm ơn vì đã đề cập đến chúng
mr.b

1
Mặc dù không hoàn toàn bằng không, nhưng nếu bạn có một máy dự phòng (với nguồn cung cấp năng lượng tốt) mà bạn có thể chỉ huy và có thể mua một vài bộ điều khiển SATA giá rẻ (có một cổng hai trong máy gia đình của tôi có giá thuê bạn có thể tạo máy sao chép đơn giản của riêng mình và sử dụng phương pháp dd + tee hoặc phần mềm khác nếu bạn có thể tìm thấy một số hỗ trợ "đọc từ nguồn đơn, ghi vào nhiều" một cách hiệu quả.
David Spillett

(Đây là những gì tôi cho rằng bạn đang cố gắng thực hiện trong câu trả lời ban đầu của tôi.)
David Spillett

1

Vì chưa có ai đề cập đến nó, tôi sẽ đề cập đến Clonezilla và Phiên bản máy chủ của họ. (thật không may, dường như không có liên kết trực tiếp đến nó, nhưng bạn có thể tìm thấy "Phiên bản máy chủ" trong menu điều hướng bên trái của trang web ...)

Tôi đã rất may mắn với phiên bản Clonezilla Live nhưng chưa thử Server Edition. Trông khá lắt léo mặc dù.


Tôi sẽ thứ hai Clonezilla vì đây là một giải pháp tốt cho bạn dựa trên phản hồi bạn đã cung cấp.
dùng35060

1

Nếu bạn đang sử dụng Mac OS X, tính năng này được tích hợp sẵn. Từ máy bạn sẽ phục vụ hình ảnh từ khi bắt đầu phiên asr phát đa hướng. Từ các máy khách khởi chạy vào đĩa khởi động, mở terminal và kết nối với luồng phát đa hướng asr. Miễn phí.

Chi tiết: http://www.bombich.com/mactips/multicast.html


1

Tôi tìm thấy 2 liên kết hữu ích trên web liên quan đến điều này. Một người đã sử dụng dd không có mèo để làm đĩa:

dd if=/dev/sdb | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://joshhead.wordpress.com/2011/08/04/multipl-output-files-with-dd-utility

Điều này được tiếp tục mở rộng với một liên kết khác để hiển thị đồng hồ đo tiến độ:

dd if=/dev/sdb | pv -s $(blockdev --getsize64 /dev/sdb) | tee >(dd of=/dev/sdc) | tee >(dd of=/dev/sdj) | dd of=/dev/sdh

http://www.commandlinefu.com/commands/view/6177/dd-with-proTHER-bar-and-statistic


0

Tôi muốn mở rộng câu trả lời của David

pv drive.image | tee >(dd of=/dev/sda) >(dd of=/dev/sdb) >(dd of=/dev/sdc) | dd of=/dev/sdd

Đây drive.imagethực sự có thể là một thiết bị khác, như/dev/sde

Thứ hai, ddlệnh sẽ làm việc cường độ nhanh hơn với một bsthiết lập phù hợp . Tôi đã sử dụng bs=64kvà thấy tốc độ tăng gấp 6 lần khi sao chép phân vùng 40 Gig, từ 1 giờ đến 10 phút.

Vì vậy, lệnh cuối cùng sẽ trông như thế này:

pv drive.image | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd

Nếu nguồn của bạn là một ổ đĩa thay vì một tệp, nó sẽ trông như thế này:

pv /dev/sde | tee >(dd bs=64k of=/dev/sda) >(dd bs=64k of=/dev/sdb) >(dd bs=64k of=/dev/sdc) | dd bs=64k of=/dev/sdd


0

Sao chép đĩa cứng song song là một nhiệm vụ phổ biến trong pháp y máy tính. dc3dd( trang man ) là một công cụ chuyên dụng cho phép sao chép song song một nguồn vào nhiều đích và hoạt động như UNIX dd, với nhiều of=tùy chọn được phép.

Cũng có thể cho phép băm khối lượng nguồn và các bản sao để xác minh tính toàn vẹn của chúng.

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.