প্রোগ্রাম্যালি বিভাজন ডিস্ক


10

আমি বাশ স্ক্রিপ্ট তৈরি করার চেষ্টা করছি যা বিদ্যমান পার্টিশন (গুলি) সহ একটি ডিস্কে একটি ফাইল সিস্টেমের সাথে একটি নতুন পার্টিশন তৈরি করবে।

দেখে মনে হচ্ছে পার্টেড দিয়ে পার্টিশন তৈরি করা সহজ, তবে নতুন পার্টিশনটি কোথায় শুরু করতে হবে এবং বন্ধ করতে হবে তা আপনার জানতে হবে এবং এখানেই আমার সমস্যা হচ্ছে।

আমি নির্দিষ্ট অবস্থান / আকারে পার্টিশন থাকা ডিস্কের উপর নির্ভর করতে চাই না। এটি হ'ল আমি সর্বশেষ বিদ্যমান অংশের সাথে সাথেই নতুন পার্টিশন তৈরি করতে চাই। আমি তারপরে একটি নির্দিষ্ট আকারের পার্টিশন তৈরি করতে বা অবশিষ্ট স্থান পূরণ করতে সক্ষম হতে চাই।

বাশে, এটি নির্ধারণের একটি নির্ভরযোগ্য উপায় আছে?

ক) সর্বশেষ বিভাজনের শেষ অবস্থান, এবং
খ) শেষ বিভাজনের পরে বাকী অংশবিহীন স্থান?


1
এমনকি যদি আপনি এটি করতে পারেন, আমি করব না। একটি টাইপো এখানে কী ধরনের ক্ষয়ক্ষতি করতে পারে তা কল্পনা করুন ...
জোসেফ আর।

ভাল না। কিছু বিতরণের ইনস্টলারগুলির পুনরায় বিভাগকারী থাকে এবং এটি লিখতে এটি খুব সহজ কাজ নয়। অনেকগুলি কোণার কেস, খুব বেশি জিনিস আপনি গোলযোগ করতে পারেন। এটা করবেন না। যদি আপনি এটি করেন তবে এটি প্রস্তাবিত কনফিগারেশন তৈরি করতে দিন, এটি অপারেটরের দ্বারা অনুমোদিত হতে হবে।
পিটার্ফ

আমি সম্মত এই বিপজ্জনক। তবে এটি একটি স্ক্রিপ্ট যা ডিস্কের সমস্ত পার্টিশন মুছে ফেলে শুরু হবে, সুতরাং পার্টিশনগুলি পরে গণ্ডগোল করা কোনও বড় বিষয় নয়। একমাত্র ঝুঁকিটি হল যে ব্যবহারকারী ভুল ডিস্ক নির্দিষ্ট করে, যা কোনও পার্টিশন সরঞ্জামের মতোই সহজ।
অ্যালেক্স

উত্তর:


4

partedবিনামূল্যে স্থান মুদ্রণ করতে পারেন। উদাহরণ (উদ্দেশ্য অনুযায়ী আমি একটি জটিলটিকে বেছে নিয়েছি):

# parted /dev/sda unit s print free
[...]
Number  Start      End        Size       Type      File system  Flags
        63s        2047s      1985s                Free Space
 1      2048s      4196351s   4194304s   primary   fat32        lba
        4196352s   4198399s   2048s                Free Space
 2      4198400s   6295551s   2097152s   primary   ext2         boot
        6295552s   6297599s   2048s                Free Space
 3      6297600s   27269119s  20971520s  primary   ext2
        27269120s  27271167s  2048s                Free Space
 4      27271168s  31115263s  3844096s   extended               lba
 5      27273216s  29192191s  1918976s   logical   ext2
 6      29194240s  31115263s  1921024s   logical   ext2
        31115264s  31116287s  1024s                Free Space

এই আপনি সরাসরি অবস্থান ও পার্টিশনের মাপ দেয় হিসাবে আপনি দেখতে পারেন আপনার তৈরি, অর্থাত্ শেষ লাইন যে সক্ষম হতে পারে Free Space। আপনি এমন একটি পার্টিশন তৈরি করতে পারেন যা 31115264s থেকে শুরু হয়ে 31116287 এ শেষ হবে।

যদি সমস্যাটি না হয় তবে বর্ধিত পার্টিশনটি যথেষ্ট বড় নয়!

তবে আপনি ইতিমধ্যে জিপিটি ব্যবহার করেছেন যেখানে আপনি এই জাতীয় জটিলতায় ভুগছেন না।

সংখ্যা দখল করা যথেষ্ট সহজ হওয়া উচিত।

function make_partition
{
    parted -s "$1" unit s mkpart primary "$2" "$3"
}

make_partition /dev/sda `parted /dev/sda unit s print free | grep 'Free Space' | tail -n 1`

বা অনুরূপ কিছু। (স্বাভাবিকভাবেই আপনি এখানে আরও কিছু সতর্কতা পরীক্ষা করতে চান want)

@ সুইসচিজ অন্য উত্তরে একটি ভাল মন্তব্য করেছেন, আমি partedপ্রস্তাবিত পার্স বান্ধব আউটপুটটি জানতাম না । পরিবর্তে আপনি এটি ব্যবহার করতে পারেন। সর্বশেষ বৃহত্তম বিনামূল্যে দখলের উদাহরণ:

# parted -m /dev/sda unit s print free | grep 'free;' | sort -t : -k 4n -k 2n | tail -n 1
1:27269120s:27271167s:2048s:free;

এটি আপনার পরিস্থিতির জন্য প্রযোজ্য কিনা (আমার উদাহরণস্বরূপ, আপনি সেখানে একটি পার্টিশন তৈরি করতে পারেন নি, এটি ইতিমধ্যে সত্যিই পূর্ণ) আপনার নিজের জন্য এটি বের করতে হবে is :)


ধন্যবাদ! রেফারেন্সের জন্য, আমি আপনার মেক-পার্টিশন ফাংশনটি ব্যবহার করেছি তবে কিছুটা ভিন্ন যুক্তি সহ: মেক_ পার্টিশন $ ডিস্কparted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
অ্যালেক্স

-1

এটি সহজ, mkpartedএকটি আছে --listবিকল্প, আপনি ব্যবহার করতে হবে awk এবং --listগত পার্টিশন পুনরুদ্ধার করতে এবং তারপর ব্যবহার mkpart part-type [fs-type] start end,

তবে আপনার উত্তর:

প্রথমে আপনার সমস্ত পার্টিশন এবং এর সাথে পাওয়া উচিত:

mystartgroup=`parted --list |awk {'print $2'}`
myendgroup=`parted --list |awk {'print $3'}`

মন্তব্য:

  1. আপনি রূপান্তর করা উচিত GBকাছে MG
  2. আপনার প্রত্যেকের সর্বশেষ মানটি ব্যবহার করা উচিত variable
  3. -sআপনার parted commandচূড়ান্ত স্ক্রিপ্টে আপনার ব্যবহার করা উচিত ।

আমার যদি সময় থাকে তবে সময় না পাওয়ার জন্য দুঃখিত এই স্ক্রিপ্টটি সম্পূর্ণ করুন।


হাই, আপনি প্রস্তাবিত কমান্ড সিকোয়েন্সগুলি কি আসলে চালিয়েছেন? আমি মনে করি না তারা আপনার কাছ থেকে যা প্রত্যাশা করেছে তা তারা করে .. ..(
সুইসচিজ

আমি আপডেট করেছি, আবার পড়ুন।
ফারসিগাল্ফ

বিকল্প 2ও পরিবর্তন করা হয়েছিল।
ফারসিগাল্ফ

2
হাই, আমি যা বোঝাতে চেয়েছি তা হল, 'পার্টড - লিস্ট | অ্যাভক' {মুদ্রণ $ 2} 'কেবল অন্ধভাবে অন্ধকারে পাইপিং করছে! এটি আপনি যা চান তা পায় না। বিচ্ছিন্ন হওয়ার জন্য আপনার -m বিকল্পটি ব্যবহার করা উচিত, যা "পার্স-বান্ধব" আউটপুট সরবরাহ করে।
সুইসচিজ

1
শুভকামনা আর কিছু বলার নেই।
সুইসচিজ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.