আমি কীভাবে কোনও ফাইল সিস্টেমের ইউআইডি খুঁজে পাই


133

আমি উবুন্টু চালাচ্ছি এবং UUIDএকটি নির্দিষ্ট ফাইল সিস্টেমের (পার্টিশন নয়) সন্ধান করতে চাই। আমি জানি আমি e2label /dev/sda1ফাইল সিস্টেমের লেবেল সন্ধানের জন্য ব্যবহার করতে পারি তবে এটি সন্ধানের মতো কোনও উপায় বলে মনে হয় না UUID


সমস্ত উত্তরের জন্য ধন্যবাদ, আমি নিশ্চিত যে আমি সেগুলি বিভিন্ন পরিস্থিতিতে ব্যবহার করব।
ব্র্যাড গিলবার্ট

2
নোট করুন যে শিরোনামটি "কোনও পার্টিশনের ইউআইডি আমি কীভাবে খুঁজে পাই" be জিপিটি পার্টিশন টেবিল ব্যবহার করার সময় এই প্রশ্নটি তখনই বোধগম্য হয়। এই প্রশ্নের একটি উত্তর এখানে
অ্যালাস্টার ইরভিন

উত্তর:


164

আর একটি কমান্ড যা উপলভ্য এবং এটির জন্য বেশ ভালভাবে কাজ করে তা হ'ল ব্লকিড '। এটি e2fsprogs প্যাকেজের অংশ। এর ব্যবহারের উদাহরণ:

/ Dev / sda1 এ ডেটা সন্ধান করুন:

topher@crucible:~$ sudo blkid /dev/sda1
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"

সমস্ত পার্টিশনের জন্য ইউআইডি ডেটা দেখান:

topher@crucible:~$ sudo blkid
/dev/sda1: UUID="727cac18-044b-4504-87f1-a5aefa774bda" TYPE="ext3"
/dev/sdb: UUID="467c4aa9-963d-4467-8cd0-d58caaacaff4" TYPE="ext3"

সকল পার্টিশনের জন্য ইউআইডি ডেটা ফর্ম্যাটটি পড়তে সহজভাবে দেখান: (দ্রষ্টব্য: নতুন প্রকাশে, blkid -Lএর আলাদা অর্থ রয়েছে এবং blkid -o listপরিবর্তে এটি ব্যবহার করা উচিত)

topher@crucible:~$ sudo blkid -L
device     fs_type label    mount point    UUID
-------------------------------------------------------------------------------
/dev/sda1 ext3             /              727cac18-044b-4504-87f1-a5aefa774bda
/dev/sdc  ext3             /home          467c4aa9-963d-4467-8cd0-d58caaacaff4

/ Dev / sda1 এর জন্য কেবলমাত্র ইউইউডি এবং অন্য কিছুই প্রদর্শন করুন:

topher@crucible:~$ sudo blkid -s UUID -o value /dev/sda1
727cac18-044b-4504-87f1-a5aefa774bda

1
আমার উবুন্টু কম্পিউটারে আমার সুডো ব্যবহার করার দরকার নেই।
ব্র্যাড গিলবার্ট

কেবল টাইপিং blkid, যা চেয়েছিলাম ঠিক তা পেয়েছি, তবে যা চেয়েছিলাম তা নয়। (আমি যাইহোক এটি গ্রহণ করছি, কারণ আমি নিশ্চিত যে আমি এটি প্রায়শই ব্যবহার করব)
ব্র্যাড গিলবার্ট

3
উবুন্টুর নতুন সংস্করণে blkid -Lএখন সমপরিমাণ কমান্ড blkid -o list; -Lবিকল্প পরিবর্তন করা হয়েছে -L labelএকটি ডিভাইস নির্দিষ্ট ট্যাগ ব্যবহার করে সন্ধান করার।
অ্যাকুলিচ

@ অ্যাকুলিচ আমি সাম্প্রতিক সিনট্যাক্স অন্তর্ভুক্ত করার জন্য উত্তর আপডেট করেছি blkid। এটি উল্লেখ করার জন্য ধন্যবাদ।
ক্রিস্টোফার ক্যাসেল

2
দুর্দান্ত, আমি কখনই জানতাম না blkid; আমি সবসময় সবেমাত্র করেছি ls -l /dev/disk/by-uuidblkidsys-apps/util-linux
জেন্টুতে

10

কেবল জিপিটি পার্টিশনযুক্ত ডিস্কের জন্য

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

জিপিটি ফর্ম্যাটেড ডিস্ক / ডিভ / এসডিএ, পাশাপাশি এর পার্টিশন লেবেল ইত্যাদিতে পার্টিশন 1-এর জিইউইডি পাওয়ার জন্য:

sudo sgdisk -i 1 /dev/sda

বা সমস্ত সহ:

ls -l /dev/disk/by-partuuid

ফাইল সিস্টেমে একটি নির্দিষ্ট পার্টিশনের মূলটি বুট করার জন্য আপনি লিনাক্স কার্নেল প্যারামিটার সিনট্যাক্স ব্যবহার করতে পারেন:

root=PARTUUID=87654321-4321-4321-abcd-123456789012

এক্ষেত্রে আপনি ইউইউডি-র কেবল সূচনা নির্দিষ্ট করতে পারবেন - অনন্য হতে যথেষ্ট। এই প্যারামিটারটি আরও আদিম এবং বুট প্রক্রিয়াতে এর আগে কার্নেল দ্বারা এটি বোঝা যায়।


এর মধ্যে শব্দার্থবিজ্ঞানের মধ্যে পার্থক্য রয়েছে:

একটি ডিস্কে পার্টিশন থাকে, একটি পার্টিশন একটি ফাইল সিস্টেম ধারণ করে, একটি ফাইল সিস্টেম ডিরেক্টরি এবং ফাইল ধারণ করে। কিছু সেট আপ এবং অপারেটিং সিস্টেমের জন্য আরও স্তর রয়েছে।

জিইউইডি ইউআইডি এবং সম্পর্কিত লেবেল একটি পার্টিশনকে বোঝায়, তবে পার্টিশনের বিষয়বস্তু নয়। একই ডিস্কে একটি নতুন পার্টিশন, বা একটি নতুন ডিস্কের একটি পার্টিশনে একটি নতুন জিইউডি ইউআইডি থাকবে। একই পার্টিশনটি একদিন এক ফাইল সিস্টেম এবং অন্য দিনে অন্য একটি দিনে থাকতে পারে। এটি কেবলমাত্র জিপিটি ফর্ম্যাটেড ডিস্কের জন্য বিদ্যমান তবে লিগ্যাসি বিভাজনযুক্ত ডিস্কের জন্য নয়। এখানে নির্দিষ্টকরণ root=/dev/sda1বা নির্দিষ্টকরণের চেয়ে বেশি কোনও ইউটিলিটি নেই root=8:1

অন্যান্য বর্তমান উত্তরগুলি কয়েকটি বিভাজনযুক্ত ফাইল সিস্টেমের ইউআইডিকে বোঝায় । যদি ফাইল সিস্টেমটি সামগ্রিকভাবে অন্য একটি পার্টিশন বা হার্ড ডিস্কে অনুলিপি করা হয় তবে মানটি একই থাকে। এই ইউআইডি একটি সরানো ফাইল সিস্টেম সন্ধানে কার্যকর। সুতরাং এটি সম্ভবত বেশিরভাগ মানুষের কাছে প্রাসঙ্গিক। লিনাক্স কার্নেল পরামিতি এটি root=UUID=87654321-4321-4321-a567-123456789012বোঝায়।

আমি বিশ্বাস করি root=LABEL=এবং root=UUID=তাড়াতাড়ি ইউজারস্পেস দ্বারা প্রয়োগ করা হয়, আমার সিস্টেমে অন্য দিন আমি যে ডিআইডি কোড দেখেছি সেগুলি এই পরামিতিগুলিকে / ডিভ / ডিস্ক / বাই-ইউইড এবং / ডেভ / ডিস্ক / বাই লেবেলে অনুবাদ করেছে (যে লিঙ্কগুলি আমি বিশ্বাস করি তাতে উদেব তৈরি করেছেন আমার সিস্টেমে ইউজারস্পেস)।

[1] http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c#n183


সঠিক ব্যবহার স্যাডডিস্ক ১.০.১ এর সাথে -i1বা এর -i 1বিপরীতে দেখা যাচ্ছে -i:1
চার্লস ডাফি

@ চার্লসডফি এই ত্রুটিটি খুঁজে পাওয়ার জন্য ধন্যবাদ। আমি উত্তরটি সংশোধন করে এটি সংশোধন করেছি।
জন এস গ্রুবার

7

স্ক্রিপ্ট-ক্লিন উপায় এটি করার জন্য যা কোনও ধরণের ফাইল সিস্টেমে কাজ করে তা হল:

lsblk -no UUID <device-containing-FS>

বা, মাউন্টপয়েন্ট (বা এর মধ্যে কোনও ফাইল) দেওয়া হয়েছে:

lsblk -no UUID $(df -P <file> | awk 'END{print $1}')

আউটপুট হ'ল ইউআইডি, পুরো ইউআইডি এবং ইউআইডি ছাড়া আর কিছুই নয়।


1
blkid@ ক্রিসটোফার-ক্যাসেলের উত্তরের চেয়ে এটি আরও ভাল , কারণ আপনাকে রুট হওয়ার দরকার নেই। মাউন্ট-পয়েন্ট অথবা একটি ফাইল জন্য আরো ভালো করতে: lsblk -no UUID $(findmnt -n -o SOURCE --target <file>)
মার্জ

@মার্কজ এটি বিটিআরএফস সাবভলিউমগুলিতে ব্যর্থ: findmnt -n -o SOURCE --target ~দেয়:/dev/mapper/vg_svelte-home[/@home]
টম হেল

ডান @ টম-হ্যালে lsblk -no UUID $(findmnt -n -o SOURCE --target <file> | cut -d[ -f1)উপস্থিত থাকার সময় সাবভলিউমটি থেকে মুক্তি পাওয়া উচিত।
মার্জ

5

Ext2 / ext3 / ext4 এর জন্য এটি করার সহজতম উপায় হ'ল:

/sbin/tune2fs -l /dev/sda1

3
আপনার ফাইল সিস্টেমটি ext2, ext3 বা ext4 হিসাবে ফর্ম্যাট করা থাকলে এটি কাজ করবে। বেশিরভাগ ফাইল সিস্টেমগুলি এর মধ্যে একটি তবে সমস্ত নয়। এটি অদলবদল বিভাজনের জন্যও কাজ করবে না। আমার উত্তরটি সর্বজনীন উপায়ে দেখুন।
হামিশ ডাউনার

আমার ক্ষেত্রে এটি ফলাফলCouldn't find valid filesystem superblock.
মিশেল

3

এটি করার প্রস্তাবিত উপায়টি হ'ল

sudo vol_id -u /dev/sda2

ইউআইডি ব্যবহারের জন্য আরও তথ্যের জন্য এই নিবন্ধটি দেখুন (উবুন্টু সহায়তা থেকে, তবে ইউআইডি ব্যবহার করে যে কোনও লিনাক্স ডিস্ট্রোর পক্ষে কাজ করা উচিত)।

এই প্রশ্নের মন্তব্যে উল্লিখিত হিসাবে, ভোল_আইডি আপনার পথে নাও থাকতে পারে। উবুন্টুতে এটি / এসবিনে রয়েছে তাই উপরেরগুলি কাজ করবে। ফেডোরার জন্য এটি প্রয়োজনীয় মনে হয়

sudo /lib/udev/vol_id -u /dev/sda2

যদি অন্য বিতরণে অন্য জায়গায় ভোল_আইড থাকে তবে একটি মন্তব্য পোস্ট করুন এবং আমি এটি এই উত্তরে যুক্ত করব।


এটি আমার ফেডোরা 10 ল্যাপটপে কাজ করে না।
এডি 17

এটি আমার চেয়ে অনেক ভাল সমাধান। এডি, ভোল_আইডি / লাইব / উদেভে অবস্থিত। মিশ, আপনি নিজের উত্তরটি vol_id এর পুরো পথটি উপসর্গ সম্পাদনা করতে পারবেন? আমি জানি যে কোনও বিতরণ ডিফল্টরূপে / lib / udev মূলের পথে নেই।
মিহাই লিম্বান

"/ lib / udev / vol_id / dev / sda2" কাজ করছে বলে মনে হচ্ছে। খুব কম লোকের পথে / lib / udev থাকবে।
এডি 17

আমার উবুন্টু কম্পিউটারে সেখান থেকে একটি সিম্বলিক লিঙ্ক /sbin/vol_idথেকে/lib/udev/vol_id
ব্র্যাড গিলবার্ট

4
ভোল_আইডিকে উবুন্টু থেকে কার্মিক (9.10) হিসাবে বাদ দেওয়া হয়েছে সুতরাং এটি আর কার্যকর বা প্রাসঙ্গিক নয়। এটা তোলে প্যাঁচাল অনেক সেখানে পেতে হিসাবে মাধ্যমে গিয়েছিলাম vol_id প্রতিস্থাপন নির্মিত এক পর্যায়ে ছিল blkid
আলাইন ও'ডিয়া


2

ধরে নিই যে আপনি sda1 এর জন্য ইউইউডি চান, আপনি এরকম কিছু চেষ্টা করতে পারেন:

for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" | grep ../sda1 | cut -d\: -f2 | cut -d/ -f5 ; done

সেই অনুযায়ী sda1 সামঞ্জস্য করুন। সমস্ত পার্টিশনের জন্য ইউআইডিগুলি পেতে গ্রিপস এবং কাটগুলি ফেলে দিন:

for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" ; done

আমার ডেস্কটপে sda1 এর জন্য নমুনা আউটপুট:

[mihailim@home ~]$ for v in /dev/disk/by-uuid/* ; do echo "`readlink $v`: $v" | grep ../sdb3 | cut -d\: -f2 | cut -d/ -f5 ; done
dc8c49f1-e2dc-46bc-ba02-013f26c85f70

সম্পাদনা করুন: দয়া করে নোট করুন যে এই সমাধানটি যদিও udev-> ভোল_আইডি একের চেয়ে বেশি স্বতন্ত্র, যদিও মূল অধিকারগুলির প্রয়োজন হয় না , ২০০৫-পরবর্তী কোনও কার্নেলে কাজ করবে এবং ডিফল্টরূপে যে কোনও লিনাক্স বিতরণে উপস্থিত সরঞ্জামগুলির উপর নির্ভর করবে যে কোনও ব্যবহারকারীর জন্য পথ।


এটি যে কোনও কম্পিউটারে সাম্প্রতিক পর্যায়ে যথেষ্ট পরিমাণ ডিএফগুলি চালিয়ে কাজ করবে।
এডি 17

1

আপনি সমস্ত ইউইউডি মুদ্রণের জন্য এটি ব্যবহার করতে পারেন:

for disk in /dev/disk/by-uuid/*; do 
    basename "$(readlink "$disk")"
    basename "$disk"
    echo
done

অথবা sda1আপনি যে ডিভাইসটি অনুসন্ধান করতে চান তা প্রতিস্থাপন করে এই তর্কযোগ্যতর সরল কমান্ড :

disk=sda1
find /dev/disk/by-uuid -type l -exec sh -c "readlink {} | grep -o $disk && basename {}" \;

সমস্ত ইউইউডি মুদ্রণের জন্য দ্বিতীয় পদ্ধতির একটি অভিযোজন:

find /dev/disk/by-uuid -type l -exec sh -c 'basename $(readlink {}); basename {}; echo' \;

1
ls -l /dev/disk/by-uuid | grep `lsblk | grep "/" | awk '{print $1}'` | awk '{print $9}'

উপরেরগুলি বেশিরভাগ বছর ধরে (বেশিরভাগ ক্ষেত্রেই আমি খুঁজে পেয়েছি) লিনাক্স সিস্টেমে কাজ করে বলে মনে হচ্ছে। এর ত্রুটি থাকতে পারে, আমি জানি না। আমি সিরিয়াল নম্বর পেতে পছন্দ করব তবে ... এটি মূল ফাইল সিস্টেমের ইউআইইডি।

কারও কাছে যদি রুট হওয়ার দরকার না পড়ে সিরিয়াল নম্বর পাওয়ার উপায় থাকে (যেমনটি আমার হয়) এবং ইউনিক্সের বিভিন্ন সংস্করণে পৃথক "অস্বাভাবিক" প্যাকেজগুলি ইনস্টল না করে আমি এটির প্রশংসা করব - সর্বদা কিছু শিখতে পারি। এবং আমি সচেতন যে আমি জিনিসগুলি মিশ্রিত করছি - এটি হ'ল মূল ফাইল সিস্টেম ইউআইডি, কোনও ডিস্ক নয়।

বিটিডাব্লু এর উদ্দেশ্য হ'ল মেশিনে এক অনন্য নম্বর তৈরি করা যা সংশোধন করা যায় না (ডিস্ক সিরিয়াল নম্বর এবং ম্যাক অ্যাড্রেসের মতো একসময় অনেক আগে ছিল)।

এটি একটি একক মেশিনে সফ্টওয়্যার এনকোডিংয়ের জন্য ব্যবহৃত হয়। ম্যাকের ঠিকানা ঠিক ছিল যতক্ষণ না তারা তাদের ভার্চুয়াল হওয়ার অনুমতি দেয় ... কিছু নির্লজ্জ গ্রাহক কেবল তাদের ম্যাকের ঠিকানাটি একটি ধ্রুবকটিতে (অবশ্যই বিভিন্ন নেটওয়ার্কে) সেট করে রেখেছিলেন এবং আমাকে অর্থ প্রদান করা এড়ান।

এইআইএক্সে একটি নম্বর পাওয়ার জন্য একটি কল রয়েছে যা মেশিনটিকে চিহ্নিত করে। হার্ডওয়্যার পরিবর্তন হয় বা সফ্টওয়্যার আপডেট হয় কিনা তা বিবেচ্য নয় তাই তারা কীভাবে এটি করবেন আমার কোনও ধারণা নেই ... যদি মাদারবোর্ড পরিবর্তন হয় তবে সংখ্যাটি পরিবর্তিত হয়, তাই আমি মনে করি তারা সেগুলিকে এখানে লুকিয়ে রাখে। এবং এটি বিরল beyond


0

নির্দিষ্ট ড্রাইভের জন্য ইউআইডি পাওয়ার জন্য আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন,

sudo vol_id -u /dev/sda1

অথবা আপনি এটি সংযুক্ত মিডিয়াতে সমস্ত ইউআইডি-র তালিকা তৈরি করতে ব্যবহার করতে পারেন,

ls /dev/disk/by-uuid

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