Tek disk sürücüsünü aynı anda birden çok sürücüye klonlama


12

Tek disk sürücüsünü aynı anda birden fazla disk sürücüsüne kopyalamanın bir yolunu arıyorum.

1 TB disklerde sistem görüntüleri hazırladım ve bir diski diğerine klonlamak neredeyse 2 saat sürüyor ve 30 diskin klonlanması için katlanarak yükseliyor.

Bir diski birden fazla hedefe klonlamak mümkün olsaydı, tüm prosedürü çok basitleştirecekti.

Ayrıca, bu tür bir operasyonu engelleyen bir şey var mı? Demek istediğim, tanıdığım her disk klonlama yazılımının yalnızca tek bir hedef sürücüyü desteklemesinin özel bir nedeni var mı?

Teşekkürler!

Yanıtlar:


17

Bunu yapmak için bash komutunun tee işlemiyle birlikte "process substitution" komutunu kullanabilirsiniz:

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

ya da netlik için (biraz verimlilik pahasına) ddsonuncunun diğerleriyle aynı şekilde çağrılmasını sağlayabilir ve tee stdout'unu / dev / null'a gönderebilirsiniz:

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

Eğer varsa ve bunu kullanabilirsiniz yüklü boru görüntüleyici yerine catyararlı bir ilerleme göstergesi almak için:

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

Bu, kaynak görüntüyü yalnızca bir kez okur, bu nedenle kaynak sürücünün kafa atması görülür, bu nedenle görüntüyü diğer yöntemlerle birden çok kez kopyalamaya çalıştığınızda muhtemelen üstel yavaşlama göreceksiniz. teeYukarıdaki gibi kullanıldığında , işlemler en yavaş hedef sürücünün hızında çalışmalıdır.

Hedef sürücülerin USB üzerinden bağlı olması durumunda, bunların hepsinin veri yolu bant genişliğini paylaşıyor olabileceğini unutmayın, bu nedenle paralel olarak çok sayıda yazmak bunları sıralı olarak yazmaktan daha hızlı olmayabilir, çünkü USB veri yolu kaynak veya hedef sürücüler değil darboğaz haline gelir.

Yukarıdaki, Linux veya benzeri kullandığınızı varsayar (cihaz adları farklı olsa da OSX üzerinde de çalışmalıdır), Windows veya başka bir şey kullanıyorsanız, farklı bir çözüme ihtiyacınız vardır.

Düzenle

Ağ üzerinden görüntüleme, kullandığınız yazılım bazı yayın veya çok noktaya yayın iletimini desteklemedikçe, USB üzerinden birçok sürücünün görüntülenmesi ile benzer bir soruna sahiptir - aktarım kanalı sürücüler yerine darboğaz haline gelir.

İçin ddyöntemle yapabildin muhtemelen papatya dizimi netcat+ tee+ ddşöyle her makinede süreçler:

  1. Kaynak makinesi cat/ pv/ ddaracılığıyla veri s nchedef makineye 1.
  2. Hedef makine (1), nckaynak makineden veri dinler ve bunları boru hattına teegönderir dd(bu da diske ncgönderir ) ve hedef makineye (2) gönderen başka bir işleme sahiptir.
  3. Hedef makine (2), nchedef makine (1) 'den gelen verileri dinler ve bunları boru hattına teegönderir dd(ve böylece diske) ve nchedef makineye (3) gönderen başka bir işleme sahiptir.
  4. ve böylece ncverileri önceki makineden alıp diske gönderen son makineye kadar devam eder dd.

Bu şekilde, anahtar ve ağ kartlarınızın hepsinin tam çift yönlü bir bağlantı üzerinde anlaştığınızı varsayarak, tam ağ bant genişliğinizi potansiyel olarak kullanırsınız. Kaynak makine yerine verilerin 10 kopyasını gönderir (10 hedef makine olduğu varsayılır), böylece her biri giden bant genişliğinin 1 / 10'u ile sınırlıdır. Her bir hedef makine verilerin bir kopyasını alıp gönderir tekrar. Sen tampon boyutu ayarlarını değiştirebilir gerekebilir pv, ncve dden pratik performans yaklaşmak için.

Çok noktaya yayını destekleyen bir yazılım bulabilirseniz, bu çok daha kolay (ve muhtemelen biraz daha hızlı) olacaktır! Ama yukarıdaki denemek için yeterince daft olabilir hacky çözüm tür ...

Tekrar Düzenle

Başka bir düşünce. Sürücü görüntüsü iyi sıkıştırırsa (büyük parçaları sıfırlarla doluysa), kaynak makinenin giden bant genişliği aynı anda birçok hedefe gönderilse bile sorun olmak zorunda değildir. Önce görüntüyü sıkıştırın, tee+ ile her yere nciletin ve hedeflerde (ağ-> nc-> dekompresör-> dd-> disk) açın.


Sürecin derinlemesine açıklaması için teşekkürler. Gerçekten yardımcı oldu. Şu anda (çoklu yayın kullanarak) ağ klonlama seçeneklerini araştırıyorum ve başarısız olursa, bu DD vektörünü biraz daha keşfedeceğim.
mr.b

Sürücülerin farklı bilgisayarlara bağlı olduğunu söylemediniz ... bu da işleri tamamen farklı kılıyor!
marcusw

Bu, yerel bilgisayara ve bilgisayar ağına aynı anda birden çok diske çoğaltma ile en yakın şekilde gelir. Ayrıntılı açıklama için teşekkürler!
mr.b

Linux tabanlı Ağ klonlama seçenekleri için Clonezilla'yı düşünmek isteyebilirsiniz. Çok noktaya yayın yoluyla klonlanabilir ve DD dahil olmak üzere çeşitli yerel klonlama seçenekleri.
user35060

5

Google'da ilk yanıt önerildi (bir Linux sisteminde): dd if=/dev/sdb of=- | tee >(dd of=/dev/sdc) >(dd of=/dev/sdd) >(dd of=/dev/sde)/ dev / sdb klonlamak istediğiniz sabit disktir ve / dev / sdc, / dev / sdb ve / dev / sde klonlamak için sürücülerdir ( Bunlardan istediğiniz kadar daha fazlasını ekleyin, sadece kopyala). Bir LiveCD bunu yapmalı ve sürücü harflerinize dikkat etmeyi unutmayın!


1
Doğru. Bu soruyu sormadan önce biraz araştırma yaptım, ancak diğer insanların deneyimlerini duymakla ilgilendim. DD harika bir yardımcı programdır, ancak: 1) gerçek veri içeriği (boş alanı da sektöre göre kopyalayacaktır) ve 2) biri birden fazla sürücüye klon yaparken performans sorunları bildirmiştir. Böylece. Başka fikir var mı?
mr.b

"[...] burada / dev / sdb klonlamak istediğiniz sabit sürücü ve / dev / sdc, / dev / sdb ve / dev / sde klonlanacak sürücülerdir [...]" ---> “[...] ve sürücü harflerinize dikkat etmeyi unutmayın!” : DI Katılıyorum !!!
dag729

1
@ mr.b: 1) Aklımda, bit-bit bir kopya potansiyel olarak tehlikeli kısayollar almaktan daha iyidir. 2) Meh, düşünebildiğim en iyi yol, aynı anda birden fazla konuma kopyalamak için dd'nin kaynağını karıştırmaktır, ancak yavaş yolu kopyalamak daha hızlı olacaktır.
marcusw

Hakkında emin misin of=-? Sadece -stdout benim için çıktı yerine bir çıktı dosyası oluşturur . Bu, yalnızca ofseçenek bırakılarak çözülebilir .
therefromhere

Bu şekilde "tee" kullanmak işe yaramaz. Lütfen bakınız: joshhead.wordpress.com/2011/08/04/…
user35060

2

Tek bildiğim, Sabit Disk Çoğaltıcıları adı verilen bazı şeyler var. Bunlar, HD'leri aynı anda birden fazla Sürücüye kopyalamak (çoğaltmak) için özel Aygıtlardır. Belki bu makale size yardımcı olabilir.


Evet, bu cihazların varlığının farkındayım; Ancak, özellikle sıfır bütçe
davamda

1
Tamamen sıfır maliyet olmamakla birlikte, daha iyi bir güç kaynağı olan yedek bir makineniz varsa ve birkaç ucuz SATA denetleyicisini karşılayabiliyorsanız (ev makinemde bir kiracıya mal olan iki bağlantı noktalı bir tane var) Kendi basit çoğaltma makinenizi yapabilir ve "tek kaynaktan okuma, birçok kişiye yazma" işlevlerini verimli bir şekilde destekleyen bazılarını bulabilirseniz dd + tee yöntemini veya diğer yazılımları kullanabilirsiniz.
David Spillett

(İlk
cevabımda

1

Henüz kimse bundan bahsetmediği için, Clonezilla ve Sunucu Sürümlerinden bahsedeceğim . (ne yazık ki, doğrudan bir bağlantı yok gibi görünüyor, ancak sitenin sol gezinme menüsünde "Sunucu Sürümü" nü bulabilirsiniz ...)

Clonezilla Live sürümü ile büyük şansım oldu ama henüz Server Edition'ı denemedim. Gerçi oldukça kaygan görünüyor.


Verdiğiniz geri bildirimlere dayanarak sizin için iyi bir çözüm gibi görünen ikinci Clonezilla'yı kullanacağım.
user35060


1

Web'de bununla ilgili 2 faydalı bağlantı buldum. Bir diskdupe yapmak için kedi olmadan dd kullanılır:

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/multiple-output-files-with-dd-utility

Bu, bir ilerleme ölçer göstermek için başka bir bağlantıyla daha da genişletilir:

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-progress-bar-and-statistics


0

David'in cevabını genişletmek istedim

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

drive.imageAslında gibi başka bir cihaz olabilir/dev/sde

İkincisi, ddkomut uygun bir bsayarla büyüklükleri daha hızlı çalışacaktır . bs=64k1 saatten 10 dakikaya kadar 40 Gig disk bölümünü kopyalamak için 6 kat hız artışı kullandım ve gördüm.

Yani son komut şöyle görünecek:

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

Kaynağınız dosya yerine bir sürücü ise, şuna benzer:

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

Paralel sabit disk çoğaltma, bilgisayar adli tıpta yaygın bir görevdir. dc3dd( man sayfası ), tek bir kaynağın birden fazla hedefe paralel kopyalanmasına izin veren ve UNIX gibi çalışan ddve birden fazla of=seçeneğe izin veren özel bir araçtır .

Bütünlüklerini doğrulamak için kaynak birimin ve kopyaların karmasını etkinleştirmek de mümkündür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.