মানক সরঞ্জামগুলি ব্যবহার করে কীভাবে একটি সম্পূর্ণ ডিস্কের পার্টিশন লেআউটটি অনুলিপি করবেন


81

লজিক্যাল ড্রাইভ সহ একটি হার্ড ড্রাইভের পুরো পার্টিশন বিন্যাসের একটি ব্যাকআপ নিতে চাই , যাতে আমি সেই লেআউটটিকে অন্য ডিস্কে পুনরুদ্ধার করতে পারি। আমি পার্টিশনের সামগ্রীগুলি অনুলিপি করতে চাই না , কেবলমাত্র বিন্যাস layout প্রাথমিক এবং বর্ধিত পার্টিশনের জন্য, এটি সহজ:

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

জিপিটি পার্টিশন টেবিলগুলির জন্য, এটি sfdiskইউজ-লিনাক্স ২.২26 বা তার পরে প্রয়োজন। এটি libfdisk এর উপরে স্ক্র্যাচ থেকে পুনরায় লেখা হয়েছিল

এটি নতুন তৈরির পরিবর্তে ইউআইডিগুলি অপরিবর্তিত রাখে। সুতরাং নতুন ডিস্কটি একই লেআউট সহ অন্য একটি ডিস্ক নয়, মূলটির ক্লোন। নোট করুন যে লিনাক্স /dev/disk/by-uuid/ফাইল-সিস্টেম ইউআইডিগুলিতে দেখায়, যদিও পার্টিশন সারণীতে ইউআইডি নয়। sfdiskআপনি যদি ডাম্প থেকে ইউআইডিগুলি সম্পাদনা করেন (ফাইলের শুরুতে পার্টিশন টেবিলের জন্য পার্টিশন এবং ইউআইডি) নিজেই সম্পাদনা করেন তবে নতুন ইউআইডিগুলি তৈরি করা হবে।


1
আমি নিশ্চিতভাবে জানি না, তবে আমার মনে একমাত্র সীমাটি আসে এমএসডোস পার্টিশন টেবিল স্কিম দ্বারা বিভাজনের জন্য 2 টিবি আকারের সীমা। এই সীমাটি কাটিয়ে ওঠার জন্য, কেউ তার পরিবর্তে জিপিটি ব্যবহার করতে পারে, তবে এএফআইএকে এসএফডিস্ক জিপিটি দিয়ে কাজ করতে পারে না। আমি জানি না অন্য কোনও সীমা আছে কি না এবং এসএফডিস্ক যদি এটি মোকাবেলা করতে না পারে তবে রিপোর্ট করবে।
পেটর উজেল

2
sfdiskবড় পরিমাণে বা জিপিটি সমর্থন করে না with
dhchdd

1
@ ব্যারি এবং আপনি যখন "বৃহত্তর" বলছেন, আপনি 2TB সীমাটি উল্লেখ করছেন @ পেটার কথা বলছেন?
লরিজ ভি ভি থালো

5
সঠিক উপায়টি হ'ল: sudo parted / dev / sda -lm> sda.parted
dhchdhd

1
কখনও কখনও এটি কার্যকর হয়, কেবলমাত্র ডস সমস্যাগুলি উপেক্ষা করার জন্য, -L বা --linux বিকল্প যুক্ত করতে:sfdisk -L /dev/sda < part_table
ডিয়েগো

50

এটি নির্ভর করে যদি আপনার উত্স ডিস্কটি কোনও এমবিআর (ওরফে "ডস" বা "এমএসডোস") বা জিপিটি (ওরফে "জিআইডি") পার্টিশন টেবিল ব্যবহার করে।

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

জিপিটি ডিস্কের জন্য

সঠিক উত্তর দেওয়া হয়েছিল এখানে এবং এখানে দ্বারা ক্রিস হারপার

আপনার জিপিটি fdisk দরকার । এ ডাউনলোড পাতা বা রান sudo apt-get install gdisk

তারপরে স্যাডডিস্ক কমান্ডটি ব্যবহার করুন :

# 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

শেষ কমান্ডটি ডিস্ক এবং সমস্ত পার্টিশনের জিইউডি এলোমেলো করে দেয়। এটি কেবল তখনই প্রয়োজনীয় যখন ডিস্কগুলি একই মেশিনে ব্যবহার করতে হয়, অন্যথায় এটি অপ্রয়োজনীয়।


10
আমি সর্বদা ভয় পাই আমি দুটি পরামিতিগুলি মিশিয়ে দেব, সুতরাং --backup=Fileউত্স ড্রাইভ থেকে একটি পার্টিশন টেবিল রফতানি --load-backup=Fileকরতে এবং গন্তব্য ড্রাইভে পুনরুদ্ধার করার জন্য একটি ভাল কৌশল ।
zidarsk8

আপনি যখন পার্টিশন টেবিলটি সরান এবং তারপরে ডিস্কগুলি এবং পার্টিশনের জিআইডিটি এলোমেলো করে দেবেন তখন উপরে বর্ণিত ডিস্ক এবং পরবর্তী পার্টিশনের বিদ্যমান ডেটাগুলির কি ঝুঁকি রয়েছে? ধন্যবাদ!
এঞ্জিআইআরআইডিডি

@ এঞ্জিআইআরডিডি: যতক্ষণ আপনি $ উত্স এবং $ গন্তব্যকে মিশ্রিত করবেন না, ততক্ষণ ডেটা নিয়ে ঝুঁকি থাকতে পারে না, কারণ গন্তব্যের কোনও ডেটা নেই। আপনি কেবল পার্টিশন বিন্যাসটি অনুলিপি করতে পারেন এবং তারপরেও পরে ডেটা ফর্ম্যাট এবং অনুলিপি করতে হবে।
mivk

আমার জিজ্ঞাসার কারণটি হ'ল আসলে আমি একটি ফাঁকা ডিস্ক থেকে শুরু করছি না, আমি দুটি ডিস্ক চারপাশে অদলবদল করছি ...
EngBIRD

5

পুরাতন তবে তবুও আকর্ষণীয় পাইপার্ড এবং পাইথন- এলভিএম বাইন্ডিং।

হালনাগাদ:

পূর্ববর্তীটি পোস্ট করা হয়েছিল কারণ উপরেরগুলি sfdisk ম্যান পৃষ্ঠাতে অনেক আধুনিক পরিস্থিতিতে কাজ করে না।

sfdisk জিইউইডি পার্টিশন টেবিল (জিপিটি) বুঝতে পারে না এবং এটি বৃহত পার্টিশনের জন্য ডিজাইন করা হয়নি। বিশেষ ক্ষেত্রে আরও উন্নত GNU পার্টড (8) ব্যবহার করুন।

এই কমান্ডটি>> 2 টিবি পার্টিশন এবং এলভিএম সমর্থন করে।

# 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
এই উত্তরটি নিষ্ক্রিয় কারণ প্রশ্নটি একটি নতুন ড্রাইভে পার্টিশন বিন্যাসটি অনুলিপি করার বিষয়ে ছিল। উত্তরটি কেবল ডাম্পিংয়ের বিষয়ে। কীভাবে আমদানি করবেন? দয়া করে উন্নতি করুন।
itafire

আপাতদৃষ্টিতে এই মুহুর্তে, কোনও ভাল উত্তর নেই: সার্ভারসফল্ট
ওথিয়াস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.