मानक टूल का उपयोग करके पूरे डिस्क के विभाजन लेआउट को कैसे कॉपी करें


81

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

dd if=/dev/sda of=partitiontable.bin bs=1 skip=446 count=64 # backup
dd if=partitiontable.bin of=/dev/sda bs=1 seek=446 count=64 # restore

लेकिन जब यह तार्किक विभाजनों के लेआउट की बात आती है, तो मुझे आश्चर्य होता है कि क्या मानक साधनों में लेआउट को बचाने का एक समान तरीका मौजूद है? मुझे लगता है कि मुख्य समस्या ईबीआर के स्थानों के लिए ऑफसेट ढूंढ रही है, क्योंकि इसके साथ, ddबाकी काम करेंगे। ध्यान रखें कि मुझे सब कुछ वापस (संभवतः) रिक्त डिस्क पर रखने और इस तरह एक ही लेआउट को पुनर्स्थापित करने में सक्षम होने की आवश्यकता है। विभाजन उपकरणों का उपयोग करना fdiskया जैसे partedठीक है, लेकिन मुझे उनके उपयोग (स्क्रिप्टिंग) को स्वचालित करने में सक्षम होना चाहिए और उन्हें किसी भी एक्स-संबंधित पैकेज - कमांड लाइन पर निर्भर नहीं होना चाहिए।

मेरी बैकअप योजना मैन्युअल मॉड्यूल का उपयोग करके इसे थोड़ा अजगर स्क्रिप्ट में मैन्युअल रूप से कर रही है, लेकिन मुझे उम्मीद है कि एक आसान तरीका था।

जवाबों:


89

आप इस कार्य के लिए sfdisk का उपयोग कर सकते हैं ।

सहेजें:

sfdisk -d /dev/sda > part_table

पुनर्स्थापित करें:

sfdisk /dev/sda < part_table

GPT विभाजन तालिकाओं के लिए, इसके लिए उपयोग sfdisk-लिनेक्स 2.26 या बाद के संस्करण की आवश्यकता होती है। यह libfdisk के शीर्ष पर खरोंच से फिर से लिखा गया था

यह UUIDs को अपरिवर्तित करता है, न कि नया बनाने के बजाय। तो नई डिस्क मूल का एक क्लोन है, न कि एक ही लेआउट के साथ एक और डिस्क। ध्यान दें कि लिनक्स /dev/disk/by-uuid/फाइल सिस्टम यूयूआईडी पर दिखता है, हालांकि, विभाजन तालिका में यूयूआईडी नहीं है। sfdiskयदि आप UUIDs को डंप (प्रति-विभाजन और UUID को विभाजन तालिका के आरंभ में फ़ाइल के पास से बाहर निकालते हैं) से संपादित करते हैं तो नए UUIDs उत्पन्न करेंगे।


1
मैं निश्चित रूप से नहीं जानता, लेकिन मेरे दिमाग में आने वाली एकमात्र सीमा है msdoso टॉवर योजना द्वारा लगाए गए विभाजन के लिए 2TB आकार की सीमा। इस सीमा को पार करने के लिए, कोई इसके बजाय GPT का उपयोग कर सकता है, लेकिन AFAIK sfdisk GPT के साथ काम नहीं कर सकता है। मुझे नहीं पता कि क्या कोई और सीमा है और न ही अगर sfdisk रिपोर्ट करेगा तो यह सामना नहीं कर सकता।
पेट्र उज़ेल

2
sfdiskबड़े संस्करणों के साथ काम नहीं करता है या GPT का समर्थन नहीं करता है।
dhchdhd

1
@Barry और जब आप "बड़े" कहते हैं, तो आप 2TB सीमा का उल्लेख कर रहे हैं @Petr के बारे में बात कर रहे हैं?
लॉरिट्ज वी। थुलो

5
सही तरीका है: सुडो जुदा / देव / sda -lm> sda.parted
dhchdhd

1
कभी-कभी यह उपयोगी होता है, डॉस को केवल समस्याओं को नजरअंदाज करने के लिए, -L या --linux विकल्प को जोड़ने के लिए :sfdisk -L /dev/sda < part_table
डिएगो

50

यह निर्भर करता है कि क्या आपकी स्रोत डिस्क MBR (उर्फ "डॉस" या "msdos") या GPT (उर्फ "GUID") विभाजन तालिका का उपयोग करती है।

2 टीबी से अधिक के डिस्क एमबीआर का उपयोग नहीं कर सकते हैं, इसलिए वे जीपीटी हैं।

2 टीबी के तहत डिस्क दोनों का उपयोग कर सकते हैं, इसलिए आपको पहले यह पता लगाना होगा कि यह कौन सा है।

यह मानते हुए कि आप लिनक्स पर हैं, यह जानने के लिए कि आपके स्रोत डिस्क किस विभाजन तालिका का उपयोग करती है, यह जानने के लिए इनमें से किसी भी कमांड का उपयोग करें:

disk=/dev/sda

# Always available, but old versions may not recognize gpt
fdisk -l $disk | grep type

# `apt-get install gdisk` or equivalent on non-Debian systems
gdisk -l $disk | grep -A4 'scan'

# `apt-get install parted`
parted $disk print | grep Table

दिया हुआ

source=/dev/sda
dest=/dev/sdb

एमबीआर डिस्क के लिए

sfdiskपेट्र उज़ेल के उत्तर या इस प्रकार के सुझाव के अनुसार उपयोग करें:

# Save MBR disks
sfdisk -d $source > /partitions-backup-$(basename $source).sfdisk
sfdisk -d $dest   > /partitions-backup-$(basename $dest).sfdisk

# Copy $source layout to $dest
sfdisk -d $source | sfdisk $dest

GPT डिस्क के लिए

सही जवाब क्रिश हार्पर ने यहां और यहां दिया था ।

आपको GPT fdisk की आवश्यकता है । को देखो डाउनलोड पृष्ठ या रन sudo apt-get install gdisk

फिर sgdisk कमांड का उपयोग करें :

# Save MBR disks
sgdisk --backup=/partitions-backup-$(basename $source).sgdisk $source
sgdisk --backup=/partitions-backup-$(basename $dest).sgdisk $dest

# Copy $source layout to $dest and regenerate GUIDs
sgdisk --replicate=$dest $source
sgdisk -G $dest

अंतिम कमांड डिस्क और सभी विभाजनों पर GUID को यादृच्छिक करता है। यह केवल तभी आवश्यक है जब डिस्क का उपयोग उसी मशीन में किया जाए, अन्यथा यह अनावश्यक है।


10
मुझे हमेशा डर लगता है कि मैं दो मापदंडों को मिला दूंगा, इसलिए --backup=Fileस्रोत ड्राइव से विभाजन तालिका को निर्यात --load-backup=Fileकरने और गंतव्य ड्राइव पर पुनर्स्थापित करने के लिए एक अच्छी चाल है ।
zidarsk8

जब आप विभाजन तालिका को आगे बढ़ाते हैं तो डिस्क और उसके बाद के विभाजन पर मौजूदा डेटा के लिए कोई जोखिम होता है और फिर जैसा कि आप ऊपर वर्णित डिस्क और विभाजन के GUID को यादृच्छिक करते हैं? धन्यवाद!
EngBIRD

@EngBIRD: जब तक आप $ स्रोत और $ भाग्य को नहीं मिलाते हैं, तब तक डेटा के लिए जोखिम नहीं हो सकता है, क्योंकि गंतव्य पर कोई डेटा नहीं है। आप केवल विभाजन लेआउट को कॉपी करते हैं, और फिर भी बाद में डेटा को प्रारूपित और कॉपी करने की आवश्यकता होती है।
10

कारण मैंने पूछा कि वास्तव में मैं एक खाली डिस्क से शुरू नहीं कर रहा हूं, मैं दो डिस्क को चारों ओर स्वैप कर रहा हूं ...
EngBIRD

5

पुराने लेकिन अभी भी दिलचस्प pyparted और अजगर- lvm बाइंडिंग।

अपडेट करें:

पिछले पोस्ट किया गया था क्योंकि ऊपर sfdisk मैन पेज प्रति कई आधुनिक स्थितियों में काम नहीं करता है।

sfdisk GUID विभाजन तालिका (GPT) को नहीं समझता है और इसे बड़े विभाजन के लिए डिज़ाइन नहीं किया गया है। विशेष रूप से अधिक उन्नत GNU पार्टीशन (8) का उपयोग करें।

यह आदेश हालांकि> 2 टीबी विभाजन और LVM का समर्थन करता है।

# parted -ms /dev/sda print > sda.parted

नमूना उत्पादन:

BYT;
/dev/sda:12.9GB:scsi:512:512:msdos:VMware Virtual disk;
1:1049kB:12.9GB:12.9GB:::boot, lvm;

14
आप सहेजे गए sda.partedफ़ाइल से एक नई डिस्क पर कैसे पुनर्स्थापित करते हैं ?
चैन

4
यह उत्तर बेकार है क्योंकि सवाल विभाजन लेआउट को एक नई ड्राइव में कॉपी करने के बारे में था। इसका जवाब सिर्फ डंपिंग के बारे में है। आयात कैसे करें? कृपया सुधार करें।
इसका सफर

जाहिरा तौर पर इस समय, कोई अच्छा जवाब नहीं है: serverfault.com/questions/709582/…
ओथियस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.