আমি গতরাতে একটি ভুল করেছি, যা আমার ফাইল-সার্ভারের 1800 জিবি অজান্তেই মুছে ফেলেছে


27

আমি গতকাল এই আদেশটি চালিয়েছি, আমি একটি পরীক্ষার মেশিনে ভেবেছিলাম, তবে এটি এসএসএইচ-এর মাধ্যমে সংযুক্ত একটি ফাইল-সার্ভার ছিল।

sudo rm -rf /tmp/* !(lost+found)

আমার টার্মিনাল এমুলেটরটি কনসোল। আমার সিস্টেমটি ডেবিয়ান 7।

প্রশ্ন:

এই আদেশটি কি / টেম্পে থাকা ফাইলগুলি বাদ দিয়ে অন্য ফাইলগুলি মুছে ফেলেছে?


এটি কি হতে পারে যে / হোম ফাইল সিস্টেম মাউন্ট করা হয়নি?
ইমানুয়েল

@ ইমানুয়েল আমি নিশ্চিত করেছি যে ফাইলগুলি হারিয়ে গেছে।
কিছু কিছু

1
আপনার ইতিহাস মুছে ফেলার কোনও ত্রুটি দেখায় না। "কিল $ (lsof / usr ...)" করার সময় আপনি অনেকগুলি অপারেটিং সিস্টেম প্রক্রিয়া মেরে ফেলেছেন। ফাইল সিস্টেম ভাগ করে নেওয়ার উপর প্রভাব ফেলেছে। আপনি পরিষেবাগুলি পুনরায় চালু করার চেষ্টা করেছেন বা ফাইলারটি পুনরায় চালু করার চেষ্টা করেছেন?
ইমানুয়েল

1
@ সামোথিংসমিংথিং কনসোল শেল নয়, এটি কে ডি কে ডিফল্ট টার্মিনাল এমুলেটর। টার্মিনালে কিছু অক্ষর টাইপ করার চেষ্টা করুন, পছন্দ করুন dsgsadfsfএবং এন্টার টিপুন। ফলাফল দেখুন। যদি এটি হয় bash: dsgsadfsf: command not foundতবে আপনার শেলটি bash
গ্যাবর ফারকাস

5
আমি আশা করি আপনার ভাল ব্যাকআপ আছে। আপনি যদি পুনরুদ্ধারের চেষ্টা করতে চলেছেন, আপনি যতক্ষণ না পরীক্ষা করতে ড্রাইভের বাইট-লেভেল অনুলিপি তৈরি করতে সক্ষম না হন ততক্ষণ এই সিস্টেমটি ব্যবহার বন্ধ করুন। প্রশ্নযুক্ত ফাইল সিস্টেমে যে কোনও লেখাই ক্ষয়ক্ষতি বাড়িয়ে তুলবে।
একটি সিভিএন

উত্তর:


43

ব্যাশের সঠিক বাক্য গঠনটি নিম্নলিখিত:

rm /tmp/!(lost+found)

@ গল্ডিলোকস মন্তব্যগুলিতে যেমন লিখেছেন , মূল কমান্ডটি ক্যোয়ারিতে একটি প্রসার ঘটায় (এটি /tmpফোল্ডারের সমস্ত ফাইল মুছে দেয় , তারপরে চলে যায় এবং আপনার কার্যত ফোল্ডারে বর্তমান ওয়ার্কিং ফোল্ডারের সমস্ত ফাইল মুছে দেয় home)।

আপনি আপনার কিছু তথ্য পুনরুদ্ধার করতে পারেন কিনা তা পরীক্ষা করে দেখতে চেষ্টা করতে পারেন। লিনাক্স তথ্য পুনরুদ্ধার সম্পর্কে একটি প্রশ্ন আছে এখানে


28
আহ, তাই এটি বিখ্যাত "আমার কমান্ড লাইন যে আমার সকল ডেটা ধ্বংস অনুপস্থিত স্থান" এর মূলত আরেকটি কেস - কেবল মত rm -rf / tmp^^
মার্টিন ভন Wittich

8
আমি যথেষ্ট জোর দিতে পারছি না, যে স্যাসাদমিন প্যারানোয়া কারণহীন নয়। :) সর্বদা আপনার সর্বাধিক মূল্যবান ডেটা এমন জায়গায় ব্যাক আপ করুন, যেখানে আপনি কেবল মূল হিসাবে লিখতে পারেন।
গ্যাবর ফারকাস

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

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

1
@ সিমোনজ্যাক এর ফলে দুর্ঘটনার সম্ভাবনা হ্রাস করতে পারে, ফলস্বরূপ এটি আমার পক্ষে যথেষ্ট :)
গ্যাবর ফারকাস

26

!(lost+found)আপনার rmকমান্ড সম্ভবত মারাত্মক ভুল ছিল:

1978  rm -rf /tmp/* !(lost+found)
1979  sudo rm -rf /tmp/* !(lost+found)

আমি ঠিক জানি না যে bashএটি দিয়ে কী করছে তবে নীচের এই কমান্ডটি আমার /tmp/এবং আমার বর্তমান ডিরেক্টরি (যা বর্তমানে রয়েছে ~) সমস্ত কিছু মুদ্রণ করে :

echo /tmp/* !(lost+found)

!(folder)কমান্ড আমি একবার দৌড়ে যা ছাড়া সমস্ত মোছা অংশ folder
কিছু কিছু

3
এটি এমন কিছু মনে হচ্ছে যা zsh এর সাথে কাজ করতে পারে; বাশ আমি মনে করি না। আমি ইতিহাস থেকে কমান্ডগুলি পুনরুদ্ধার করতে ব্যবহৃত !lost+found: event not foundহিসাবে পাই !
wurtel

9
বাবা! "আমি জানি না যে ঠিক সেই সাথে বাশ করছে" -> এটি একটি সম্প্রসারণ করছে। অনুমান "এই ব্যতীত সবকিছু" কি? cd /; echo !(lost+found)> _ <
স্বর্ণলোকস

13
দয়া করে মনে রাখবেন যে বিকল্পটি সেট করা !(foo)থাকলে কেবল "foo ব্যতীত সমস্ত" হিসাবে ব্যাশে কাজ করে extglob। তাছাড়া ওপি কোন শেলটি ব্যবহার করছে তা নির্দিষ্ট করে দেয়নি, তাই সঠিকভাবে rm !(lost+found)কমান্ড তার ক্ষেত্রে কী করেছে তা অনুমান করা সত্যিই শক্ত ।
জিম্মিজ

5
দুর্দান্ত মন্তব্য, যদিও ওপি জানিয়েছেন যে তিনি ডেবিয়ান 7 ব্যবহার করছেন, এতে bashডিফল্ট শেল রয়েছে। তিনি সম্ভবত এটি পরিবর্তন করেন নি। তদ্ব্যতীত, ডেবিয়ান in-এ, extglobবিকল্পটি trueডিফল্টরূপে সেট করা হয়েছে (আমি এটি এখনই চেক করেছি)।
গ্যাবর ফারকাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.