Dd कमांड का उपयोग करके एसडी कार्ड क्लोनिंग


48

मैं एक एसडी कार्ड को क्लोन करने की कोशिश कर रहा हूं जिसमें कई विभाजन हो सकते हैं, जिनमें से कुछ उबंटू पहचान नहीं सकते हैं। आम तौर पर, मैं कुछ विभाजन ही नहीं, पूरी मात्रा को क्लोन करना चाहता हूं। इसलिए, मैं एसडी कार्ड को माउंट करता हूं और लॉग व्यूअर में कुछ इस तरह देखता हूं:

kernel: [  262.025221]  sdc: sdc1 sdc2

alex@u120432:~$ ls /dev/sdc*
/dev/sdc  /dev/sdc1  /dev/sdc2

चूंकि मैं पूरी डिस्क की प्रतिलिपि बनाना चाहता हूं, इसलिए मैं निष्पादित करता हूं:

dd if=/dev/sdc of=sdimage.img bs=4M

फ़ाइल sdimage.img, 7.9 जीबी (7,944,011,776 बाइट्स) बनाई गई है (एसडी कार्ड 8 जीबी है)। अब मैं एक और एसडी कार्ड माउंट करता हूं और निष्पादित करता हूं:

dd if=sdimage.img of=/dev/sdc bs=4M

समस्या यह है कि दूसरी dd कमांड किसी न किसी स्टेज पर लटकी रहती है, और कभी सफल नहीं होती है। इसके बाद, मैं कंप्यूटर को रिबूट या बंद नहीं कर सकता, और मुझे बस पावर को स्विच ऑफ करने की आवश्यकता है।

क्या यह सही तरीका है? शायद एसडी कार्ड को क्लोन करने का एक और तरीका है?

ओएस: Ubuntu 12.04 (सटीक पैंगोलिन), 32 बिट।


क्या आप बनाई गई img फ़ाइल को माउंट कर सकते हैं और देख सकते हैं कि क्या यह सही तरीके से बनाई गई है?
मिलान टोडोरोविच

@MilanTodorovic - मैं यह कैसे कर सकता हूं?
एलेक्स एफ

अगर मुझे सही याद है: माउंट-लूप sdimage.img / path / to / Mount। फिर यह देखने के लिए जांचें कि क्या आप img फ़ाइल को सही ढंग से ब्राउज़ कर सकते हैं।
मिलान टोडोरोविक

@MilanTodorovic: मैंने सुडो माउंट -o sdimage.img / dev / mydisk की कोशिश की और प्राप्त किया: आरोह: आरोह / देव / mydisk in / etc / fstab या / etc / mtab संभवत: मुझे पहले कुछ देव प्रविष्टि बनाने की आवश्यकता नहीं है। क्या आप इसे कुछ विवरणों के साथ उत्तर के रूप में पोस्ट कर सकते हैं? धन्यवाद।
एलेक्स एफ

1
आपको आरोहित उपकरणों पर dd का उपयोग नहीं करना चाहिए। पहले सभी विभाजनों को अनमाउंट करें, फिर आपकी कमांड को काम करना चाहिए।
ubfan1

जवाबों:


29

आपको आरोहित उपकरणों पर dd का उपयोग नहीं करना चाहिए। पहले सभी विभाजनों को अनमाउंट करें, फिर आपकी कमांड को काम करना चाहिए।


2
मेरे लिए विपरीत क्यों है? मैं Ubuntu 12.10 और कमांड केवल विभाजन के साथ काम करता है ...
Luca Davanzo

1
@Velthune क्या आप इसके बारे में निश्चित हैं? यदि हां, तो मैं आपको अपना प्रश्न बनाने का सुझाव दूंगा।

25

मूल एसडी कार्ड डालें और डिवाइस का नाम जांचें (आमतौर पर mmcblkXया sdcX):

sudo fdisk -l

आप देख सकते हैं:

Device         Boot   Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *       2048  2099199  2097152    1G  c W95 FAT32 (LBA)
/dev/mmcblk0p2      2099200 31116287 29017088 13.9G 83 Linux

मेरे मामले में एसडी कार्ड /dev/mmcblk0( *p1और *p2विभाजन हैं)।

अब आपको डिवाइस को अनमाउंट करना होगा:

sudo umount /dev/mmcblk0

अब डिवाइस की एक छवि बनाने के लिए:

sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img

इसमें कुछ समय लग जाएगा।

एक बार जब यह समाप्त हो जाए, तो खाली एसडी कार्ड डालें। यदि डिवाइस अलग है (USB या अन्य प्रकार के एसडी कार्ड रीडर) इसके नाम को सत्यापित करें और इसे अनमाउंट करें:

sudo fdisk -l
sudo umount /dev/mmcblk0

डिवाइस पर चित्र लिखें:

sudo dd if=~/sd-card-copy.img of=/dev/mmcblk0

लिखने का कार्य पहले की तुलना में बहुत धीमा है।


4
बड़ी मात्रा में डेटा की प्रतिलिपि बनाते समय आपको डिफ़ॉल्ट अवरोधक से बड़ा सेट करना चाहिए, अन्यथा आपको बहुत लंबा इंतजार करना पड़ सकता है। sudo dd if=/dev/mmcblk0 of=~/sd-card-copy.img bs=4M
xededes

13

मैं कई विभाजनों के साथ यूएसबी स्टिक क्लोन करने के लिए dd टूल का उपयोग कर रहा हूं, यहां मेरा कमांड है:

sudo dd if=/dev/sdb of=/dev/sdc bs=4096 conv=notrunc,noerror

notrunc - आउटपुट फ़ाइल
noerror को छोटा न करें - पढ़ने की त्रुटियों के बाद जारी रखें


क्या इसके लिए दो एसडी कार्ड रीडर की आवश्यकता नहीं है?
पीटर मोर्टेंसन

1
@PeterMortensen यह हाँ करता है, हम में से कई उन 4-इन -1 प्रकार के एडेप्टर का उपयोग करते हैं।
टेके 5

9

dd ठीक है, लेकिन मैं पसंद करता हूं cat /dev/sdc/ > ~/backup.iso यदि आप इसे फिर से एसडी कार्ड पर रखना चाहते हैं, तो बस चलाएंcat ~/backup.iso > /dev/sdc


दोनों एसडी 8 जीबी हैं। बिल्ली का उपयोग SD छवि बनाने के लिए किया जा सकता है, लेकिन एक और एसडी बनाने के लिए मुझे dd, सही का उपयोग करना चाहिए?
एलेक्स एफ

0

ये कदम उठाएँ जो Ubuntu पर मेरे लिए काम किया जाना है बहाल छवि फ़ाइल ( ~/raspberrypi2.imgवापस एक नया SD कार्ड (ऊपर एलन के जवाब से भारी प्रेरित) के लिए मेरे मामले में):

  1. कार्ड रीडर के माध्यम से माइक्रो एसडी कार्ड डालें।
  2. डिस्क ऐप खोलें।
  3. त्वरित प्रारूप पूरे कार्ड (एक विशिष्ट विभाजन नहीं)।
  4. डिस्क बंद करें।
  5. टर्मिनल खोलें और निष्पादित करें:

    sudo fdisk -l
    

प्रासंगिक आउटपुट (जिसमें दिखाया गया था कि पूरे कार्ड के त्वरित प्रारूप के कारण कोई विभाजन नहीं था):

Disk /dev/sdb: 7.4 GiB, 7948206080 bytes, 15523840 sectors 
Units: sectors of 1 * 512 = 512 bytes 
Sector size (logical/physical): 512 bytes / 512 bytes 
I/O size (minimum/optimal): 512 bytes / 512 bytes 
Disklabel type: dos 
Disk identifier: 0x6957f2f2

sudo dd if=~/raspberrypi2.img of=/dev/sdb

यह कदम कुछ अच्छे मिनटों (USB3 पर भी) लेता है। यह सुनिश्चित करें कि इसे किसी भी ऑपरेशन से बाधित न करें जो बढ़ते (फ़ाइलें या डिस्क ऐप्स खोलना) को लागू करेगा

हर किसी के जवाब के लिए धन्यवाद।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.