ডিবাগগুলিতে একটি ext4 ফাইল সিস্টেমে "filen / ame" (স্ল্যাশ সহ) নামের একটি ফাইল কীভাবে মুছবেন?


26

E2fsprogs দিয়ে খেলছে debugfs, পরিবর্তন / দুর্ঘটনার দ্বারা, নামের একটি ফাইল filen/ameতৈরি করা হয়েছিল। স্পষ্টতই ফরোয়ার্ড স্ল্যাশ অক্ষর /পথের নামগুলিতে বিশেষ বিভাজক চরিত্র হিসাবে কাজ করে।

তবুও ব্যবহার করে debugfsআমি নামকৃত ফাইলটি মুছে ফেলতে চেয়েছিলাম filen/ame, তবে আমার খুব কম সাফল্য হয়েছিল, যেহেতু /চরিত্রটি ফাইলটির অংশ হিসাবে ব্যাখ্যা করা হয়নি?

স্ল্যাশযুক্ত এই ফাইলটি সরানোর জন্য ডিবাগগুলি কি কোনও উপায় সরবরাহ করে? যদি তাই হয়, কিভাবে?

আমি ব্যবহার করতাম:

cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs

কোন ফলাফল:

debugfs 1.43.4 (31-Jan-2017)
 2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen/ame

আমি filen/ameফাইলটি অপসারণের জন্য নিম্নলিখিত চেষ্টা করেছি :

debugfs -w -R "rm filen/ame" /tmp/ext4fs

তবে এটি কার্যকর হয়নি এবং কেবল উত্পাদন করেছে:

debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename

ডিরেক্টরি নোডের ম্যানুয়ালি কনটেন্ট পরিবর্তন করা ছাড়াও কি ফাইলটি ব্যবহার করে মুছে ফেলার কোনও উপায় আছে debugfs?


ফরওয়ার্ডস্ল্যাশ ( filen\/ame) চালানো কি কাজ করে না?
জাব

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

উত্তর:


33

আপনি যদি কোনও সমাধান চান এবং কেবল চেষ্টা না করে থাকেন তবে আপনার জন্য কাজটি debugfsকরতে পারেন fsck । ফাইল সিস্টেমটি নোংরা হিসাবে চিহ্নিত করুন এবং fsck -yফাইলের নাম পরিবর্তন করতে চালান :

$ debugfs -w -R "dirty" /tmp/ext4fs
$ fsck -y /tmp/ext4fs
 ...
/tmp/ext4fs was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Entry 'filen/ame' in / (2) has illegal characters in its name.
Fix? yes
 ...
$ debugfs -w -R "ls" /tmp/ext4fs
2  (12) .    2  (12) ..    11  (20) lost+found    12  (980) filen.ame   

3
e2fsckএকটি -fওরেস বিকল্প রয়েছে যা "ফাইল সিস্টেম পরিষ্কার মনে হলেও" পুরো পরীক্ষার দিকে পরিচালিত করবে।
ডেভিড ফোস্টার

3

Fsck কাজ করার জন্য অভিনন্দন; যদি কোনও কারণে এটি কাজ না করে তবে উত্তরটি ls -i1অনুসরণ করা হয় umountএবং তারপরে clri

তথ্যসূত্র: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm

আমি আসলে এই পদ্ধতিটি পরীক্ষা করেছি।


যদি এটি লিনাক্স (যা এটির মতো মনে হয়) তবে এটি লক্ষ্য করা উচিত যে clriএটি একটি পৃথক কমান্ড নয় (যেমন এটি অন্য কয়েকটি ইউনিক্স সিস্টেমে রয়েছে), এটি ভিতরে একটি সাবকম্যান্ড debugfs
hobbs

@ হোবস: অবশ্যই আমার তখন অস্বাভাবিক করে তুলবে। ওহ অপেক্ষা করুন, এনভিএম ক্লারিটি কেবল "ক্ল্রি $ 2" প্রতিধ্বনিত হয়েছিল ডিবাগগুলি "$ 1"
জোশুয়া

আপনার নির্দেশাবলী যেভাবেই হোক fsck চালানো দরকার - যা Entry 'filen/ame' in / (2) has deleted/unused inode 12. Clear<y>?অন্য জবাবটিতে উল্লিখিত একটির পরিবর্তে বার্তাটি দিয়ে সমস্যার সমাধান করবে - তবে ক্লিরি করা একটি অতিরিক্ত পদক্ষেপ। একেবারে ডিবাগগুলি থেকে সমাধান করার কোনও উপায় বলে মনে হচ্ছে না।
র্যান্ডম 832

@ র্যান্ডম 832: আমি অতীতে যুগে যুগে এটির নিজের ঠিক করতে পারি নি। :(
জোশুয়া

-1

আপনি যদি কোনও ডিরেক্টরিতে ফাইলটি সরান, আপনি তারপরে ফাইলটি দিয়ে ডিরেক্টরিটি মুছতে পারেন।

mkdir foo 
mv filen* foo
rm -rf foo

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