কোন ফাইল (গুলি) নির্দিষ্ট ইনোড সংখ্যার সাথে সম্পর্কিত তাড়াতাড়ি সন্ধান করুন


44

আমি এই আদেশ সম্পর্কে জানি:

find /path/to/mountpoint -inum <inode number>

তবে এটি খুব ধীর অনুসন্ধান, আমার মনে হচ্ছে এটি করার জন্য আরও একটি দ্রুত উপায় থাকতে হবে। কেউ কি একটি দ্রুত পদ্ধতি জানেন?


এই প্রথম ইনোড ব্যবহার করে কোনও অনুসন্ধান দেখছি। কখন আপনাকে ইনোড দিয়ে অনুসন্ধান করতে হবে?
কোরেন

@ কোরেন - আপনার সামনে যদি একটি ফাইল থাকে, বলুন তবে এটি সাধারণত ব্যবহৃত হয়। এর ইনোডটি খুঁজতে আপনি ls -li করতে পারেন, তারপরে: সন্ধান করুন। -inum <inode> -exec rm -i}} \; আপনি ফাইলটি সরাতে পারবেন তা নিশ্চিত করার জন্য এটি একটি বেল্ট অ্যান্ড-ব্রেসার পন্থা। অবশ্যই, আপনি 'rm - -filename', বা rm ./- ফাইল নাম, বা rm "-filename" করতে পারেন।
সুইসচিজ

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

1
@ কোরেন উদাহরণস্বরূপ, যখন কোনও ফাইলে একাধিক হার্ড লিঙ্ক থাকে, আপনি লক্ষ্য করেছেন যে সামগ্রীগুলি অপ্রচলিত এবং ফাইলটি মুছতে চান, তবে আপনি কেবল ফাইলটির একটির নাম খুঁজে পেয়েছেন এবং অন্যগুলি মুছতে চান।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন' ২২

2
শুধু ব্যবহার find / -inum <inode>। এটি তুলনায় অনেক বেশি বহনযোগ্য debugfsএবং আরও নির্ভরযোগ্যভাবে কাজ করে (এটি উদাহরণস্বরূপ, হার্ড ড্রাইভের ফাইলগুলির সাথে সম্পর্কিত নয় এমন পাথগুলি সন্ধান করতে পারে)।
7heo.tk

উত্তর:


33

একটি ext4 ফাইল সিস্টেমের জন্য, আপনি debugfsনিম্নলিখিত উদাহরণ হিসাবে ব্যবহার করতে পারেন :

$ sudo debugfs -R 'ncheck 393094' /dev/sda2 2>/dev/null
Inode   Pathname
393094  /home/enzotib/examples.desktop

উত্তরটি তাত্ক্ষণিক নয়, তবে এটির চেয়ে ভাল বলে মনে হচ্ছে find
প্রাপ্ত আউটপুটটি ফাইলের নামটি সহজেই পার্স করা যায়।


আমার সম্ভবত ফাইল সিস্টেমের ধরণ উল্লেখ করা উচিত ছিল। আমার কাছে এটি ঘটেনি যে এই ফাইলগুলি করার পদ্ধতিটি বিভিন্ন ফাইল সিস্টেমের জন্য আলাদা। আমি এক্সএফএস ব্যবহার করছি, সুতরাং যখন আমি নিশ্চিত যে আপনার উত্তরটি সঠিক, তবে এটি আমাকে বিশেষভাবে সহায়তা করবে না।
অ্যালেক্স

6

Btrfs

man btrfs-inspect-internal বলেছেন:

   inode-resolve [-v] <ino> <path>
       (needs root privileges)

       resolve paths to all files with given inode number ino in a given
       subvolume at path, ie. all hardlinks

       Options

       -v
           verbose mode, print count of returned paths and ioctl()
           return value

উদাহরণ:

  • sudo btrfs inspect-internal inode-resolve 15380 /home

0

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

এআইএক্সের জন্য fsdb

সোলারিস এফএসডিবি পুনরায় লিঙ্ক ফাইল

Fsdb আসলে আপনি inode ফাইলের নাম আবিষ্কার না হবে, তাহলেও এটি আছে যখন আপনি এটি উল্লেখ আপনি সরাসরি inode অ্যাক্সেস করতে, সারাংশ মধ্যে অনুমতি ফাইল নিজেই (অথবা অন্তত এটা ডেটা ব্লক পয়েন্টার) তাই এটা থেকে "porting" আপনি ;-) অনুসন্ধানের তুলনায় সেই বিষয়ে দ্রুত।
আপনার প্রশ্নটি ফাইলটির সাথে আপনি কী করতে চান তা নির্দিষ্ট করে না। আপনি কি এনএফএস ফাইলহ্যান্ডলগুলি ডিকোডিং করছেন?

SC।


ঠিক আছে, আমি ভাবিনি যে আমি তথ্যটি যা করতে যাচ্ছি তা আমার প্রশ্নের সাথে প্রাসঙ্গিক, তাই আমি এটিকে রেখে দিয়েছি। আমার ক্ষেত্রে এটি কেবল একটি কৌতূহল প্রশ্ন ছিল; আমার xfs_fsr ডিফ্র্যাগমেন্টেশন স্পিট করে যা এটিকে ডিগ্রাগুলি ইনড করে এবং একটি অত্যন্ত চূর্ণবিচূর্ণ হয় (5000 টিরও বেশি এক্সটেন্টস) এবং আমি কেবল কৌতূহলী ছিলাম এটি ফাইলটি। findকাজ করে, এটা ঠিক ধীর।
অ্যালেক্স

আমি এমন একটি সমস্যা সমাধানের চেষ্টা করছি যেখানে আমার রেল ভিএম প্রতিটি বুট (20 মিনিটের!) পুরোপুরি fsck করে এবং আমি যা করতে পেরেছি তা হ'ল / var / opt / বার্তাগুলিকে দোষযুক্ত হিসাবে উল্লেখ করা ইনোড নম্বর। (এটি বলার পরে, সন্ধান করুন -আনুমটি আসলে এটি খুঁজে পায়নি)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.