Soru Disk klonlaması için DD'yi kullanma
Disk klonlama araçları ile ilgili birçok soru var ve dd
En az bir kez önerilmiştir. Kullanmayı çoktan düşündüm dd
kendim, özellikle kullanım kolaylığı nedeniyle ve hemen hemen tüm önyüklenebilir Linux dağıtımlarında kullanılabilir.
Kullanmanın en iyi yolu nedir? dd
diski klonlamak için? Hızlı bir Google araması yaptım ve ilk sonuç belirgindi başarısız deneme. Kullandıktan sonra yapmam gereken bir şey var mı dd
yani, kullanılamayan bir şey var mı? dd
?
176
2018-05-05 18:21
Menşei
Cevaplar:
dd kesinlikle en iyi klonlama aracıdır, aşağıdaki komutu kullanarak% 100 çoğaltma yaratacaktır. Onunla hiçbir zaman bir problemim olmadı.
dd if=/dev/sda of=/dev/sdb bs=32M
Her bayt klonlarken bunu, kullanılmakta olan bir sürücüde veya bölmede kullanmamanız gerektiğine dikkat edin. Özellikle veritabanları gibi uygulamalar bununla çok iyi başa çıkamazlar ve bozuk verilerle sonuçlanabilir.
152
2018-05-05 18:31
Yer kazanmak için, ggip ile dd tarafından üretilen verileri sıkıştırabilirsiniz, ör .:
dd if=/dev/hdb | gzip -c > /image.img
Diskinizi şu şekilde geri yükleyebilirsiniz:
gunzip -c /image.img.gz | dd of=/dev/hdb
Daha fazla yer kazanmak için önceden klonlamak istediğiniz sürücü / bölümü birleştirin (uygunsa), ardından kalan tüm boş alanı sıfırlayın ve gzip'in sıkıştırılmasını daha kolay hale getirin:
mkdir /mnt/hdb
mount /dev/hdb /mnt/hdb
dd if=/dev/zero of=/mnt/hdb/zero
Biraz bekle, dd sonunda bir "disk dolu" mesajı ile başarısız olacak, o zaman:
rm /mnt/hdb/zero
umount /mnt/hdb
dd if=/dev/hdb | gzip -c > /image.img
Ayrıca, durumu bildirmek için arka planda çalışan bir dd işlemini kill komutuna sahip bir sinyal göndererek alabilirsiniz.
dd if=/dev/hdb of=/image.img &
kill -SIGUSR1 1234
Sisteminizi kontrol edin - yukarıdaki komut Linux, OSX ve BSD dd komutları için kabul ettikleri sinyallerden farklıdır (OSX kullanır SIGINFO
- basabilirsiniz Ctrl+T durumu bildirmek için).
104
2018-05-06 22:47
DİKKAT: Canlı bir dosya sistemi dd'leri dosyaları bozabilir. Nedeni basit, devam edebilecek dosya sistemi etkinliğini bilmez ve azaltmaya yönelik hiçbir girişimde bulunmaz. Bir yazı kısmen devam ediyorsa, kısmi bir yazı alırsınız. Bu genellikle şeyler için iyi değildir ve genellikle veritabanları için öldürücüdür. Üstelik, eğer baskıya eğilimli olursanız Eğer ve arasında parametreler, size karşı. Çoğu durumda, rsync gelişinden sonra yazılmış eşit derecede etkili bir araçtır çoklu görevve tek tek dosyaların tutarlı görünümlerini sağlayacaktır.
Bununla birlikte, DD, bağlanmamış bir sürücünün bit durumunu doğru olarak yakalamalıdır. Önyükleyiciler, llvm birimleri, bölüm UUID'ler ve etiketler, vb. Sadece hedef sürücü bitini bit için yansıtabilen bir sürücünüz olduğundan emin olun.
37
2018-05-05 20:20
Bozuk kesimleri içerebilen bir diski kopyalamak için dd kullanırken, bir hatayla karşılaşıldığında durmadığından emin olmak için "conv = noerror, sync" komutunu kullanın ve eksik sektör (ler) i boş baytlarla doldurur. Bu genellikle başarısız veya başarısız bir diskten kurtarmaya çalışıyorsanız aldığım ilk adımdır - herhangi bir kurtarma denemesi yapmadan önce bir kopyasını alın ve sonra iyi (klonlanmış) diskte kurtarma yapın. Kopyalanamayan boş sektörlerle başa çıkmak için kurtarma aracına bırakıyorum.
Ayrıca, dd'nin hızının bs (blok boyutu) ayarından etkilenebileceğini görebilirsiniz. Genellikle bs = 32768'i denerim, fakat sizin için en hızlı olanı görmek için kendi sisteminizde test etmek isteyebilirsiniz. (Bu, başka bir nedenden dolayı belirli bir blok boyutunu kullanmanız gerekmediğini varsayar, örneğin bir kasete yazıyorsanız).
26
2018-05-07 02:42
Bir diski kopyalamak için yapmanız gereken tek şey giriş ve çıkışı dd olarak belirtmektir:
dd if=/dev/hdb of=/image.img
Elbette, doğrudan / dev / hdb'den okumak için uygun izinlere sahip olduğunuzdan emin olun (root olarak çalıştırmanızı öneririm) ve / dev / hdb monte edilmedi (disk değiştirilirken kopyalamak istemezsiniz - salt okunur olarak montaj da kabul edilebilir). Tamamlandığında, image.img tüm diskin byte-by-byte klonu olacaktır.
Diskleri klonlamak için dd kullanmanın bazı dezavantajları vardır. Öncelikle, dd tüm diskinizi, hatta boş alanı bile kopyalayacaktır ve eğer büyük bir disk üzerinde yapılırsa son derece büyük bir görüntü dosyasına neden olabilir. İkincisi, dd, kopya uzun zaman aldığı için sinir bozucu olabilecek hiçbir ilerleme göstergesi içermemektedir. Üçüncü olarak, bu görüntüyü diğer sürücülere (yine dd kullanarak) kopyalarsanız, orijinal diskten daha büyük veya büyük olmalıdır, ancak siz hedef diskin üzerindeki herhangi bir ek alanı kullanamazsınız. bölümlerinizi yeniden boyutlandırın.
Doğrudan diskten diske kopyalama da yapabilirsiniz:
dd if=/dev/hdb of=/dev/hdc
ama hala boş alan ile ilgili yukarıdaki sınırlamalara tabidir.
Sorunlar ya da gotchas kadarıyla, dd, çoğunlukla, mükemmel bir iş yapar. Ancak, bir süre önce ölmek üzere olan bir sabit diskim vardı, bu yüzden dd'yi tamamen ölmeden önce hangi bilgileri çıkarabildiğimi kopyalamak için kullandım. Daha sonra dd'nin okuma hatalarını çok iyi çözmediği öğrenildi - diskte dd okuyamayan çeşitli bölümler vardı, bu da dd'nin kopyayı bırakıp durdurmasına neden oldu. O zaman bir okuma hatasıyla karşılaşmasına rağmen dd’ye devam etmenin bir yolunu bulamadım. görünüyor ki sanki bu ayarı varmış gibi), bu yüzden elle atlamayı ve okunamayan bölümleri atlamak için arama yapmayı biraz zaman harcadım.
Bu soruna çözüm bulma konusunda biraz zaman harcadım (görevi tamamladıktan sonra) ve bir program buldum. ddrescuesiteye göre dd gibi çalışır, ancak bir hatayla karşılaşsa bile okumaya devam eder. Programı gerçekten kullanmamıştım, özellikle de kopyalamakta olduğunuz disk eskiyse, sistem iyi görünse bile bozuk kesimlere sahip olabilirse, dikkate değer.
17
2018-05-05 18:26
Kaynak sürücü hiç zarar görürse, daha fazla şansınız olur dd_rhelp
ile dd_rescue
(kişisel tercihim) veya GNU ddrescue
.
Bunun arkasındaki sebep şudur: okuma hatalarında, dd
denemeye ve denemeye ve denemeye devam ediyor - zamanaşımlarının oluşması için uzun bir süre bekliyor. dd_rescue
bir hatayı okumak gibi akıllıca şeyler yapar, daha sonra diskin üzerinde bir nokta daha seçer ve son hatayı geriye doğru okur, ve dd_rhelp
temelde bir dd_rescue
oturum yöneticisi - akıllıca başlıyor ve devam ediyor dd_rescue
tekrar daha hızlı yapmak için çalışır.
Son sonucu dd_rhelp
Minimum süre içinde toplanan maksimum veri. Eğer gidersen dd_rhelp
koşarak, sonunda tam olarak aynı işi yapar dd
aynı zamanda. Ancak eğer dd
100Gb diskinizin bayt 100'deki okuma hatalarıyla karşılaştı, diğer 9,999,900 baytlık * kurtarmak için uzun bir süre beklemeniz gerekir. dd_rhelp
+dd_rescue
veri yığınını çok daha hızlı toparlayacaktı.
11
2018-05-31 02:12
Kaynak diskte herhangi bir dosya sistemi bulunmamalıdır.
Bir kullanıcı blok aracını okuyabildiği gibi (root works), 'dd if = / dev / sda ....' komutunu çalıştırın.
Şimdi, buradaki düzgün şeylerden biri, bir bayt akışı yaratıyor olmanızdır ... ve bununla çok şey yapabilirsiniz: sıkıştırın, ağ üzerinden gönderin, daha küçük lekeler içine koyun, vb.
Örneğin:
dd if=/dev/sda | ssh user@backupserver "cat > backup.img"
Ama daha güçlü:
dd if=/dev/sda | pv -c | gzip | ssh user@backupserver "split -b 2048m -d - backup-`hostname -s`.img.gz"
Yukarıdaki, kaynak sabit diskin sıkıştırılmış bir görüntüsünü, uzaktaki bir sisteme kopyalar; bu sayede, ilerlemede güncel kalmanızı sağlarken, kaynak ana bilgisayarın adını kullanarak 2G parçalarında depolar.
Diskin boyutuna, cpu kaynağndaki hz hızina, hedefteki cpu hznn, aa hznn, vb. Bagli olarak, baskiyi atlamak, ya da uzak taraftaki baskiyi yapmak ya da ssh'in basincini saglamak isteyebilirsiniz.
7
2018-05-29 19:23