ইনোড ব্যবহার করে কোনও ফাইল বা ডিরেক্টরিটির নামকরণ করা সম্ভব?


10

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

আমি যদি ডিরেক্টরিটির ইনোডটি আগে উল্লেখ করেছিলাম তবে আমি কি ডিরেক্টরিটির নাম পরিবর্তন করতে একা এটি ব্যবহার করতে সক্ষম হব?

উত্তর:


6

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

যদি আমি আপনাকে সঠিকভাবে বুঝতে পারি তবে আপনি নিজের পুরানো /homeডিরেক্টরিটি (যা আপনার মূল বিভাজনে অবস্থিত) অ্যাক্সেসযোগ্য করার চেষ্টা করছেন, তবুও আপনার নতুন পার্টিশনটি মাউন্ট করা রয়েছে /home। যদি আপনি এটি চান তবে নিম্নলিখিতটি করুন:

সমস্ত ফাইল বন্ধ করুন এবং লগ আউট করুন। তারপরে লগ ইন করুন root(এটির জন্য ভার্চুয়াল টার্মিনালটি ব্যবহার করুন C Ctrl-Alt-F2 টিপুন) নিম্নলিখিতটি চালান:

umount /home
mv /home /home-old
mkdir /home
mount -a
ls /home
ls /home-old

সবকিছু ঠিকঠাক থাকলে লগ আউট করে নিজের মতো করে লগ ইন করুন এবং সব ঠিকঠাক হওয়া উচিত।

ঘটনাক্রমে, কোনও ফাইলের ইনোডের জ্ঞান (ফাইলটি বর্তমান ডিরেক্টরিতে রয়েছে) ধরে রেখে নামকরণের আদেশটি হ'ল:

find . -maxdepth 1 -inum 123456789 -exec mv {} mynewname \;

123456789অবশ্যই ইনোড নম্বরটি কোথায় । (দ্রষ্টব্য যে findফাইলের নাম এবং তার পথ নির্ধারণ করে এবং এই তথ্যটিকে এই পাস করে দেয় mv; বিদ্যমান ফাইলের নাম কোনওভাবেই জড়িত না করে কোনও ফাইলের নাম পরিবর্তন করার কোনও উপায় নেই, তবে যদি আপনি ফাইলের নাম জানেন না তবে এটি যথেষ্ট সহজ।)


এমভি কমান্ডটি সরাসরি ইনোডের উপর ভিত্তি করে নতুন নামকরণ করতে পারে? আমি ধরে নিই যে ফাইন্ড কমান্ড ফাইলটির স্বাভাবিক নামটি পাঠ্য আকারে ফেরত দেয়।
vfclists

@vfclists: না, কোনওভাবেই ইনোড mvগ্রহণ করবে না accept
ওয়াইল্ডকার্ড

6

একটি সাধারণ ইউনিক্স ফাইল সিস্টেমে ইনডের উপর ভিত্তি করে কোনও ফাইল স্থানান্তর করা কাঠামোগতভাবে অসম্ভব। কারণটি হ'ল কোনও ফাইলের নাম পরিবর্তনের অর্থ হ'ল ডিরেক্টরিটি অন্তর্ভুক্ত থাকা ডিরেক্টরি থেকে তার ডিরেক্টরি এন্ট্রি অপসারণ করে অন্য কোথাও একটি ডিরেক্টরি তৈরি করা। তবে ইনোডে ডিরেক্টরিতে প্রবেশের পয়েন্টার থাকে না, এটিতে কেবলমাত্র ফাইল মেটাটাটা (টাইমস্ট্যাম্পস, অনুমতি ইত্যাদি) এবং ফাইল সামগ্রী অন্তর্ভুক্ত থাকে (

একাধিক হার্ড লিঙ্কযুক্ত ফাইলের জন্য আপনি এর মধ্যে কোনটির নাম পরিবর্তন করবেন? ইনোড পর্যাপ্ত তথ্য নয়।

কোনও ডিরেক্টরি সিস্টেমের জন্য, কিছু ফাইল সিস্টেমে, কেবল ইনোডের সাহায্যে কাজ করা সম্ভব হবে:

  1. ডিরেক্টরিটির সামগ্রীটি পড়ুন, যা অবশ্যই ইনোড থেকে পৌঁছনীয়।
  2. ডিরেক্টরি ডিরেক্টরি প্রবেশ করুন ..। এটি প্যারেন্ট ডিরেক্টরিকে নির্দেশ করে।
  3. মূল ডিরেক্টরিতে, ডান ইনোড নম্বর সহ ডিরেক্টরি এন্ট্রি সন্ধান করুন।

এটি অবশ্য বেশ কয়েকটি অনুমান করে:

  • যদি একই ইনোডের জন্য একাধিক এন্ট্রি থাকে? প্রকৃতপক্ষে, এটি কোনও সমস্যা নয়: বেশিরভাগ ইউনিক্স ভেরিয়েন্ট ডিরেক্টরিতে স্পষ্টভাবে কঠোর লিঙ্কগুলি নিষিদ্ধ করার কারণে বাস্তবে এমনটি খুব কমই ঘটবে।
  • ..প্রথম স্থানে কি বিদ্যমান? এটি ফাইল সিস্টেমের ধরণের উপর নির্ভর করে। কিছু ফাইল সিস্টেমের একটি স্পষ্ট প্রবেশাধিকার রয়েছে ..; অন্যদের জন্য, এই এন্ট্রিগুলি ফাইল সিস্টেম ড্রাইভার দ্বারা নকল হয়। যদি ..বিদ্যমান না থাকে তবে এই পদ্ধতির মূলত অসম্ভব।
  • এমনকি যদি ফাইল সিস্টেমে ..লিঙ্কগুলি অন্তর্ভুক্ত থাকে তবে এরপরেও আরও একটি হোঁচট খাচ্ছে যা সুস্পষ্ট নাও হতে পারে: কার্নেলের ভিতরে প্রথম ধাপটি সম্ভব হতে পারে তবে এর জন্য কোনও ইন্টারফেস নেই। অনেকগুলি ইউনিক্স বৈকল্পিকের কোনও ইন্টারফেস নেই যা কোনও ফাইলকে তার ইনোডের মাধ্যমে খোলার অনুমতি দেয়, কারণ এটি অনুমতিগুলি বাইপাস করবে। উদাহরণস্বরূপ, অনুমতি সহ একটি ফাইল rwxr-xr-x(অর্থাত্ বিশ্ব-পঠনযোগ্য) এমন কোনও ডিরেক্টরি যা অনুমতি সহ একটি ডিরেক্টরিতে অবস্থিত rwx------(যেমন কেবল তার মালিকের কাছে অ্যাক্সেসযোগ্য) কেবল ডিরেক্টরি মালিকের কাছেই অ্যাক্সেসযোগ্য নয়। এটি একমাত্র ইনোড থেকে নির্ধারণ করা যায় না - ফাইলটি অন্য একটি হার্ড লিঙ্কের মাধ্যমেই অ্যাক্সেসযোগ্য হতে পারে!

আপশটটি হ'ল না, কেবলমাত্র তার ইনড দেওয়া ফাইলের সাথে নাম পরিবর্তন করা সহ কিছুই করা সম্ভব নয়। আপনার ফাইলটির একটি পথ থাকা দরকার।

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


-1

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

you-get -O 20191129_tucker https://www.youtube.com/watch?v=cyCpkwX9Wvs

... আমাকে ফাইল দেয়:

20191129_tucker.webm; এবং "সেভিং টাকার কার্লসন আজ রাত 11-29-19 সম্পূর্ণ- ব্রেকিং ফক্স নিউজ ২৯ শে নভেম্বর, 2019.en.srt"

আমি এটিকে অন্যথায় খুব উপকারী আপনি-পাওয়ার সংকট হিসাবে বিবেচনা করছেন।

আমি নিম্নলিখিত ফাইলের নাম পরিবর্তন করতে পারি:

s ls -il "সেভিং টকার কার্লসন আজ রাতের 11-29-19 সম্পূর্ণ- ব্রেকিং ফক্স নিউজ ২৯ শে নভেম্বর, 2019.en.srt"

... এটি আমাকে শুরুতে তার ইনোড নম্বর সহ ফাইল তালিকা দেয়:

13902671 -rw-r - r-- 1 জেমস জেমস 55793998 নভেম্বর 30 18:44 টেকার কার্লসন আজ রাত্রে সংরক্ষণ 11-29-19 সম্পূর্ণ- ব্রেকিং ফক্স নিউজ 29 নভেম্বর, 2019.en.srt

... তাহলে আমি দৌড়:

mvi 13902671 20191129_tucker.srt

আমার এমভিভি বাশ শেল স্ক্রিপ্টটি হ'ল:

#!/bin/bash
inodeNumber=$1
newFileName=$2
find . -maxdepth 1 -inum $inodeNumber -exec mv {} $newFileName \;

এটি পূর্বে যা উল্লেখ করেছে তার বাইরে কোনও নতুন তথ্য যুক্ত করে না। তদুপরি, আপনার mviস্ক্রিপ্টে অব্যক্ত ভেরিয়েবলগুলি ব্যবহার করা হয়েছে যার অর্থ হ'ল স্ক্রিপ্টে প্রদত্ত যে কোনও আর্গুমেন্টে শ্বেতক্ষেত্রের অক্ষর রয়েছে (বা তারা যখন গ্লোব্বিং অক্ষর ধারণ করে তখনও সম্ভবত) এটি ব্যর্থ হবে।
কুসালানন্দ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.