সরানো বিন এবং অন্যান্য ফোল্ডার! তাদের কীভাবে ফিরিয়ে আনব?


13

আমি দুর্ঘটনাক্রমে সমস্ত ফোল্ডারগুলি মূল থেকে একটি সাবফোল্ডারে সরালাম। ( /bin, /etc, /home, /lib, /usr, ... সব সরানো) শুধুমাত্র বেশী যে সরানো হয়নি যেহেতু তারা ব্যবহার ছিল, হয় /bak, /boot, /dev, /proc, /sys

এখন, আমি যে কমান্ডটি কার্যকর করার চেষ্টা করি তা কেবল ঘটে না। আমি ক্রমাগত "এ জাতীয় কোনও ফাইল বা ডিরেক্টরি নেই"।

আমি এসএসএসের মাধ্যমে এবং এফটিপি-র মাধ্যমে সংযুক্ত রয়েছি, তবে আমি সরাসরি এসইউ লগইন অক্ষম থাকায়, এফটিপি-র মাধ্যমে ফাইলগুলি সরাতে পারি না। সেখান থেকে সরাসরি কিছু করার দরকার হলে আমার আসল সার্ভারে অ্যাক্সেসও রয়েছে।

আমি ধরে নিচ্ছি /binযে ফোল্ডারটি কোথায় পাওয়া যাবে এবং এটি আমাকে পুনরায় অ্যাক্সেস পেতে সহায়তা করবে তা বলার জন্য আমার একটি কনফিগারেশন ফাইল সম্পাদনা করতে হবে, তবে কোন ফাইলটি হবে বা কীভাবে করব তা আমি জানি না (যেহেতু আমি chmodঅনুমতি পরিবর্তন করতে চালাতেও পারি না )।

এটি পুনরায় ইনস্টল করা ছাড়া অন্য কোনও উপায় আছে?

আমি সেন্টস-এর একটি পুরানো সংস্করণে কাজ করছি।

আমি লিনাক্স বিশ্বে অত্যন্ত নতুন, তাই এই ক্রিয়া এবং প্রশ্ন ...


আপনার সমস্যার সমাধান না হয়েও আমি এটি পড়ার পরামর্শ দিচ্ছি: lug.wsu.edu/node/414 অনুরূপ পরিস্থিতি তবে তিনি আসলে / বিন মুছে ফেলেছেন
stribika

উত্তর:


33

আপনার যদি এখনও একটি রুট শেল থাকে তবে আপনার সিস্টেমটি মেরামত করার সুযোগ হতে পারে। ধরুন আপনি সব সাধারণ ডিরেক্টরি সরানো যাক ( /bin, /etc, /lib, /sbin, /usr- এই বেশী যে পুনরুদ্ধারের কঠিন বানাতে পারে হয়) অধীনে /oops

আপনি mvপুরো পথটি নির্দিষ্ট করে নিলেও আপনি সরাসরি কমান্ডটি দিতে সক্ষম হবেন না /oops/bin/mv। কারণ এটা mvহল পরিবর্তনশীল লিঙ্ক ; কারণ আপনি /libডিরেক্টরিটি সরিয়ে নিয়েছেন , mvচালাতে পারবেন না কারণ এটি তার কোডের অংশ গঠনকারী লাইব্রেরিগুলি খুঁজে পেতে পারে না। আসলে, এটি এর চেয়েও খারাপ: গতিশীল লোডারটিmv খুঁজে পাচ্ছে না /lib/ld-linux.so.2 (আপনার আর্কিটেকচার এবং ইউনিক্স বৈকল্পিকের উপর নির্ভর করে নামটি পৃথক হতে পারে, এবং ডিরেক্টরিটি যেমন আলাদা নাম হতে পারে ) /lib32বা /lib64। অতএব, আপনি /libডিরেক্টরিটি আবার সরিয়ে না নেওয়া পর্যন্ত আপনাকে লিঙ্কারটি স্পষ্টভাবে প্রার্থনা করতে হবে এবং আপনাকে সরানো লাইব্রেরিগুলির পথ নির্দিষ্ট করতে হবে need এখানে ডিবিয়ান স্কিজ আই 386-তে পরীক্ষা করা কমান্ডটি দেওয়া আছে।

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/i386-linux-gnu
/oops/lib/ld-linux.so.2 /oops/bin/mv /oops/* /

অন্যান্য বিতরণ বা আর্কিটেকচারের জন্য আপনার এটিকে সামান্য সামঞ্জস্য করতে হবে। উদাহরণস্বরূপ, x86_64 এ CentOS এর জন্য:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib64
/oops/lib64/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /

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

# mkdir /oops
# mv /lib /bin /oops
# sash
Stand-alone shell (version 3.7)
> -mv /oops/* /
> exit

আপনার কাছে যদি আর শট শেল না থাকে তবে আপনি এখনও একটি এসএসএইচ ডেমন শুনছেন এবং আপনি সরাসরি এসএসএস-এর উপরে রুট হিসাবে লগ ইন করতে পারেন, এবং আপনার এই স্ট্যাটিকালি-লিংকড টুলবক্সগুলির মধ্যে একটি রয়েছে, আপনি এসএসএস করতে সক্ষম হতে পারেন This আপনি সরানো হয়েছে /libএবং যদি না কাজ করতে পারেন /bin, কিন্তু না /etc

ssh root@broken.example.com /oops/bin/sash
root@broken.example.com's password:
Stand-alone shell (version 3.7)
> -mv /oops/* /

কিছু প্রশাসক স্ট্যাটিকালি-লিঙ্কড শেল দিয়ে একটি বিকল্প অ্যাকাউন্ট সেটআপ করেন, বা রুট অ্যাকাউন্টটি কেবল এই ধরণের সমস্যার জন্য স্ট্যাটিকালি-লিঙ্কড শেল ব্যবহার করে।

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


1
ধন্যবাদ গিলস ভবিষ্যতে আমার কী যত্নবান হওয়া উচিত সে সম্পর্কে আপনি কিছু খুব দরকারী তথ্য সরবরাহ করেছেন useful
মেনেলাওস

ধন্যবাদ গিলস! এটি আমাকে বাঁচায়। আমি edit৪-বিট লিনাক্স এনভির জন্য একটি সম্পাদনা যুক্ত করেছি। আমার ক্ষেত্রে, 64-বিট CentOS 7
23

@ ComputerEngineer88 ধন্যবাদ, তবে আপনি যখন সম্পাদনাগুলি করেন, দয়া করে "সম্পাদনা" চিহ্নিতকারী যুক্ত করবেন না বা পোস্টের শেষে তাদের যেখানে নেই সেগুলি যুক্ত করবেন না। পাঠ্য প্রবাহ রাখুন। লোকেরা পোস্টটিতে কী রয়েছে তা জানতে চাইলে পোস্টগুলির একটি সম্পাদনার ইতিহাস থাকে। লোকেরা যখন পোস্টটি সাধারণত পড়েন, তখন তাদের কিছু যায় আসে না যে পরে কিছুটা যুক্ত হয়েছিল।
গিলস 'দুষ্ট হওয়া বন্ধ করুন'

সত্যি? আমি সবসময় সম্পাদনাগুলিতে ফোকাস করি। মানে নতুন কিছু শেখা হয়েছিল এবং আমার কাছে এটি সবচেয়ে গুরুত্বপূর্ণ। সব একই - যতক্ষণ মানুষ উপকৃত হয়!

@ ComputerEngineer88 যখন আমি স্ট্যাক ওভারফ্লো ব্যবহার শুরু করি তখন আমারও একই প্রতিচ্ছবি ফিরে আসে। তবে বাস্তবে স্ট্যাক এক্সচেঞ্জের একটি পোস্ট আলোচনার ফোরামের পোস্টের চেয়ে উইকিপিডিয়া নিবন্ধের আরও অনেক উপায়ে কাছাকাছি। লোকেরা পোস্ট করার সাথে সাথে ফোরামের পোস্টগুলি পড়ার প্রত্যাশা করেন, সুতরাং সম্পাদনা করা থাকলে তাদের কাছে দৃশ্যমান ইঙ্গিতটি বোধগম্য হয়। তবে আসুন আমরা বলি যে কেউ এই থ্রেডটি ২০২ in সালে দেখেছেন: তারা ২০১১ সালের পর থেকে অনুচ্ছেদটি সেখানে রয়েছে বা
২০১৮

11

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

  • যেখানে প্রোগ্রামগুলি চালিত হয় সেগুলি $ PATH ভেরিয়েবল ব্যবহার করে সেট করা হয়। আপনি দৌড়ে আপনার নতুন বিন অবস্থানটি পথে যোগ করতে পারেন export PATH="$PATH:/newpath/to/bin:/newpath/to/usr/bin"। আপনাকে সংশ্লিষ্ট এসবিন ডিরেক্টরিগুলিও যুক্ত করতে হবে । আপনি তাদের পুরো পথ ধরে ম্যানুয়ালি প্রোগ্রামগুলি চালনা করতে পারেন /path/to/mv [from] [to]উদাহরণস্বরূপ এমভি আলাদা অবস্থানের পরেও কাজ করা উচিত। জটিল অংশটি হ'ল বেশিরভাগ কমান্ডগুলি সাধারণ লাইব্রেরিগুলিতে অ্যাক্সেস করতে চায় এবং আপনি বলেছিলেন যে /libসরানো হয়েছে সুতরাং এটির জন্য আপনাকে একটি ভেরিয়েবল সেট করতে হবে।export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/newpath/to/lib/:/newpath/to/usr/lib

  • একবার আপনি কিছু বুনিয়াদি কমান্ড কার্যকর করতে পারলে স্টাফটি সরিয়ে ফেলুন! mv /path/to/subfolder/* /ক্রম হবে! সবকিছু আবার ফিরে এলে সিস্টেমের স্বাভাবিক আচরণ করা উচিত।

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


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

1
বাঁচতে বুট করুন, আপনার ডিস্ক মাউন্ট করুন, জিনিসগুলিকে তাদের যথাযথ জায়গায় ফিরিয়ে আনুন, আপনার সিস্টেমে পুনরায় বুট করুন ... এবং শুভকামনা রইল।
কালেব

2
এটি সেট করার জন্য যথেষ্ট নয় LD_LIBRARY_PATH, আপনাকে গতিশীল লোডারকেও স্পষ্টভাবে আহ্বান করতে হবে, যেমন LD_LIBRARY_PATH=/newpath/to/lib /newpath/to/lib/ld-linux.so.2 /newpath/to/bin/mv
গিলস 23'21

4

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


আপনাকে ধন্যবাদ। আমি কথা বলার সাথে সাথে এটি ডাউনলোড করছি। এটি লাইভ সিডি বা সম্পূর্ণ ইনস্টলেশন ডিভিডি হলে কি কোনও পার্থক্য আসে?
মেনেলাওস

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

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

2

5 বছর পরে গিলসকে অনেক ধন্যবাদ এবং আপনার পোস্টগুলি এখনও সপ্তাহ না হলে আমার দিনটি বাঁচিয়েছে।

আমি বোঝাতে চাইছিলাম সাবফোল্ডারের সামগ্রীগুলি বর্তমান ফোল্ডারে স্থানান্তরিত করার পরিবর্তে mv sub/* ., আমি করেছি mv sub /* ., তাই আমি সমস্ত কিছু বর্তমান ফোল্ডারে স্থানান্তরিত করেছি। ভাগ্যক্রমে আমি এই উত্তরটি পেয়েছি এবং আপেক্ষিক স্বাচ্ছন্দ্যে আমার মেশিনটি ঠিক করতে সক্ষম হয়েছি। তবে আমি উবুন্টু 16.04 চালিত একটি x86_64 মেশিনে কাজ করার পরে আমাকে কমান্ডগুলি সামান্য সমন্বয় করতে হয়েছিল। আমি এখানে নির্দেশাবলীটি ছেড়ে দিতে চাই, যদি কেউ লড়াই করে যাচ্ছেন:

export LD_LIBRARY_PATH=/oops/lib:/oops/lib/x86_64-linux-gnu
/oops/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /oops/bin/mv /oops/* /

0

আপনি আধুনিক সিস্টেমগুলির জন্য কেটিপ্রপের উত্তর প্রয়োগ করার পরে আমি আরও দু'টি কমান্ড যুক্ত করতে চাই (x86_64 মেশিনগুলি ইউনিক্স চলমান), আমি এমভি দিয়ে ডিরেক্টরিগুলি "ইত্যাদি" স্থানান্তর করতে পারিনি কারণ এটি ত্রুটি দেখিয়েছে

Error : Directory not empty

সুতরাং আমি ব্যবহার করতে হয়েছিল

rsync -a source_file target_location

আমি যাতে সবকিছু ঠিকঠাকভাবে ফিরে পেতে সক্ষম হয়েছি তা নিশ্চিত করতে। আপনার যদি এটি ইতিমধ্যে ইনস্টল না থাকে তবে আপনাকে প্রথমে এটি ইনস্টল করতে হবে।

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