আমি সবেমাত্র "/ বিন" মুছে ফেলেছি। পুনরুদ্ধার করার সেরা উপায় কী?


10

আমি কেবল দৌড়েছি (উদ্দেশ্য অনুযায়ী নয়!) rm -rf /bin

আমি কম্পিউটারটি বুট করে ফেলেছি এবং এর থেকে পুনরুদ্ধারের চেষ্টা করার জন্য ফিনিক্স ব্যবহার করছি। আমি ড্রাইভটি মাউন্ট করতে সফল হয়েছি এবং নিশ্চিত করেছি যে, হ্যাঁ, পুরো /binফোল্ডারটি মোছা হয়েছে।

ওএস পুনরায় ইনস্টল না করে কি এ থেকে পুনরুদ্ধার করা সম্ভব?

আমি ভাবছি যে আমি একই ওএস এবং আর্কিটেকচার (উবুন্টু সার্ভার ১১.১০ আলফা রিলিজ, x86) দিয়ে একটি ভিএম সেটআপ করতে এবং সার্ভারে ইনস্টল করা সমস্ত প্যাকেজ ইনস্টল করতে পারি, তারপরে কেবল /binফোল্ডারটি অনুলিপি করব ।

এই কাজ করবে? আমি কি আরম্ভ করেই ভাল আছি?

উত্তর:


15

সাধারণভাবে, আমি একটি পুনরায় ইনস্টল করার দিকে ঝুঁকে ছিলাম (ব্যাকআপগুলি থেকে আপনার অবশ্যই মনে হয়)। তবে আমি হ্যাকিশ অনুভব করছি, সুতরাং এখানে আরও একটি উপায় রয়েছে (ধরে নিলে আপনার সিস্টেমটি মাউন্ট করা আছে /target):

  1. এতে ফাইল রয়েছে এমন সমস্ত ইনস্টল করা প্যাকেজগুলির একটি তালিকা পান /bin:

    grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
    

    (আমার ডেবিয়ান স্কুইজ সিস্টেমে এটি মোট ৩৪ টি প্যাকেজ, এটির বেশিরভাগই মূল)

  2. এই প্যাকেজগুলির প্রত্যেকটি ডাউনলোড করুন (আমি এই বিটটির স্ক্রিপ্ট নিয়ে মাথা ঘামাতে পারি না, তাই কেবল প্যাকেজ.বুন্টু.কমকে হিট করুন এবং সেগুলি কোথাও এ ডাউনলোড করুন /target)। আপনি যদি ভাগ্যবান হন তবে প্যাকেজগুলির কয়েকটি এখনও ভাসমান অবস্থায় থাকতে পারে /target/var/cache/apt/archives

  3. প্রতিটি প্যাকেজের জন্য, চালান /target/usr/bin/dpkg -x <package> /target। আমি মোটামুটি নিশ্চিত dpkgযে এই দিনগুলিতে সমস্ত স্ব-অন্তর্ভুক্ত, এবং /binনিজের মধ্যে কোনও কিছুকেই ডাকা উচিত নয় ।

সিস্টেমটি তার পায়ে ফিরে এলে আপনার অবশ্যই এটি নিশ্চিত করা উচিত এবং একটি চালানো উচিত apt-get --reinstall install <all the packages from step 1>, কারণ (যেহেতু আপনি প্রি-রিলিজ চালাচ্ছেন, যা সিসাদমিন ক্যাট বলেছে যে উত্পাদন সিস্টেমের কোনও সংখ্যা নেই) প্যাকেজগুলির সংস্করণগুলি আপনি কেবল উত্তোলন করা সম্ভবত সিস্টেমে যা ছিল তার থেকে আলাদা হতে পারে এবং আপনি এটি নিশ্চিত করতে চাইবেন যে সিস্টেমটি ঠিক কী তা জানে।


উত্তম উত্তর, তবে আমি কি কিছু মিস করছি? dpkg-query -S /binআপনার grep .. | sedস্তবকের চেয়ে একই কাজ করবেন না ? প্রতি লাইন প্রতি একটি প্যাকেজের নাম তালিকাভুক্ত করার জন্য যদি তালিকাটি পরিষ্কার করতে হয় তবে dpkg-query -S /bin | sed 's/\,\ /\n/g'কাজ করে (যদিও শেষ লাইনে অতিরিক্ত: / বিন রয়েছে)।
জান্নে পিক্কারাইনেন

1
হ্যাঁ, এটি হবে - আমি লক্ষ্য সিস্টেমে চালিত জিনিসপত্রের পরিমাণ হ্রাস করার চেষ্টা করছিলাম যা কিছু চালাতে প্রয়োজন হয়েছিল /binএবং রেসকিউ সিস্টেম হিসাবে এটি তৈরি করতে আমি ডেবিয়ান-নির্দিষ্ট কোনও কিছুর উপর নির্ভর করতে চাইনি ভবিষ্যতের সন্ধানকারীদের জন্য যথাসম্ভব সাধারণ।
টলমল

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

1
সাধারণত, কেবলমাত্র প্রয়োজনীয় প্যাকেজগুলিতে ফাইল থাকবে /bin- বেশিরভাগ প্যাকেজগুলিতে তাদের সমস্ত ডেটা নীচে রাখা উচিত /usr। আমার সিস্টেমে কেবলমাত্র zshদু'টি অপ্রয়োজনীয় প্যাকেজ (উদাহরণস্বরূপ ) "স্টাফ ইন স্টাফ /bin" তালিকায় রয়েছে। উপভোটগুলি ভালোবাসা প্রদর্শনের এক দুর্দান্ত উপায়,
যাইহোক

1
আমি আপনার নির্দেশাবলী অনুসরণ করেছি এবং তারা নিখুঁতভাবে কাজ করেছে — আমার সার্ভারটি ব্যাক আপ এবং চলমান। সহায়তার জন্য একটি টন ধন্যবাদ!
টম মার্থেনাল

5

আপনার কৌশলটি কাজ করতে পারে (এর জন্য খুব ভাল সম্ভাবনা রয়েছে, আরও একবার যদি আপনি বিন ডিরেক্টরিটি অনুলিপি করেন, আপনি আপনার সিস্টেমে সমস্ত প্যাকেজ পুনরায় ইনস্টল করবেন), এটি ভবিষ্যতে সমস্যা তৈরি করতে পারে কারণ আপনি পেতে পারেন একটি অস্থির সার্ভার।

যদি তা আমার কাছে হত তবে আমি প্রতিদিনের ব্যাকআপ থেকে পুনরায় ইনস্টল ও পুনঃস্থাপন করতাম। আপনার একটি দৈনিক ব্যাকআপ আছে - একটি দুর্যোগ পুনরুদ্ধার পরিকল্পনা - তাই না?

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


1
অনুমান করা যেহেতু তিনি এখানে পোস্ট করেছেন কীভাবে / বিন ফোল্ডারটি পুনরুদ্ধার করবেন তার কোনও ব্যাকআপ নেই।
গোয়েজ

দুর্ভাগ্যক্রমে, আমার কোনও দৈনিক ব্যাকআপ নেই। আমি সেই সময়ে যে বাশ স্ক্রিপ্টটি লিখছিলাম তা হ'ল ব্যঙ্গাত্মকভাবে একটি দৈনিক ব্যাকআপ স্ক্রিপ্ট। দেখে মনে হচ্ছে আমি পুনরায় ইনস্টল করব advice পরামর্শের জন্য ধন্যবাদ।
টম মার্থেনাল

পুনরায় ইনস্টল করার দরকার নেই; আমার উত্তর দেখুন।
দোলা

ফাইল সিস্টেম স্ন্যাপশট এই জাতীয় জিনিস থেকে পুনরুদ্ধার জন্য অত্যন্ত দরকারী। দুর্ভাগ্যক্রমে ext2 / 3/4 ফাইল সিস্টেমগুলি সেগুলি প্রয়োগ করে না এবং এলভিএম দিয়ে এটি করার ক্ষেত্রে একটি বড় পারফরম্যান্স পেনাল্টি রয়েছে। যদি আমি আমার ফ্রিবিএসডি বাক্সে দুর্ঘটনাক্রমে / বিন মুছে ফেলি তবে আমি কেবল আগের একটি স্ন্যাপশট মাউন্ট করেছি এবং ফাইলগুলি ফাইল সিস্টেমের লাইভ সংস্করণে আবার অনুলিপি করছি। ওএস এক্স অনুমিতভাবে এটিও রয়েছে (এটি সেখানে "টাইম মেশিন" নামে পরিচিত)।
স্ন্যাপ করুন

3

আমি কোনও ভিএম তৈরির চেষ্টা করব তারপরে /binআপনার ক্ষতিগ্রস্থ মেশিনে থাকা সামগ্রীগুলি অনুলিপি করতে । এটি আপনাকে এবং চালানো উচিত। তারপরে দৌড়াও

dpkg --get-selections  | awk '{print $1}' | xargs -l1 aptitude reinstall

যা আপনার সিস্টেমে থাকা সমস্ত প্যাকেজ পুনরায় ইনস্টল করা উচিত।


1

সবচেয়ে সহজ উপায়, যদি আপনার মেশিনে অ্যাক্সেস থাকে তবে ফাইল সিস্টেমটি মাউন্ট করা আপনার সমস্ত ডেটার ব্যাকআপ নিন (ঠিক একটি সাবধানতা হিসাবে)।

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

সমস্ত প্যাকেজ পুনরায় ইনস্টল করার একটি উপায় রয়েছে যাতে / বিন পুনরায় সজ্জিত হয় তবে এটি মোটামুটি জটিল।


0

ফাইলগুলি গেছে। আপনি যখন ফাইলগুলি "মুছে ফেলার" চেষ্টা করতে পারেন - আমি এটির প্রস্তাব দেব না।

দ্রষ্টব্য: আমি উবুন্টু চালাচ্ছি না (এবং কিছুক্ষণের জন্য ডেবিয়ান ডিস্ট্রোস ব্যবহার করি নি)। তবে আমি অতীতে সমস্ত অনুরূপ দৃশ্যে বিভিন্ন বিপর্যয় পুনরুদ্ধার করেছি।

আপনার কর্মের সেরা কোর্স:

  • লাইভসিডি থেকে বুট করুন
  • লাইভসিডি ব্যবহার করে আপনার সিস্টেমের দুর্গন্ধ মাউন্ট করুন (বলুন /mnt/mint)
  • সমস্ত ইনস্টল করা প্যাকেজগুলি dpkg ক্যোয়ারী ব্যবহার করে :
# dpkg --admindir = / mnt / পুদিনা / var / lib / dpkg -l
  • অ্যাপটি-গেট ব্যবহার করে আপনার / mnt / পুদিনার গন্তব্যে এই সমস্ত প্যাকেজ ইনস্টল করুন:
# অ্যাপট-গেট-রুটডির = / এমএনটি / পুদিনা .... 
  • (বিকল্প # 1) আপনাকে ডিবুস্ট্র্যাপ করতে হতে পারে /mnt/mint- নিশ্চিত নয়
  • (বিকল্প # 2) আপনি /binলাইভ সিডিটির সামগ্রীগুলি অনুলিপি করতে পারেন /mnt/mint/binতবে আমি জানি না পুদিনার জন্য লাইভসিডি ব্যস্তবক্স ব্যবহার করে যা বিষয়গুলিকে জটিল করে তুলতে পারে - এই ক্ষেত্রে বিকল্প # 1 নিরাপদ বলে মনে হচ্ছে।

সাধারণত এটি আপনার সমস্ত কিছু "ব্রুট-পুনরায় ইনস্টল" করে আপনার ফাইলগুলি ফিরিয়ে আনতে হবে। আপনি / পকেটে বাইনারিগুলি ফেলে আসা সমস্ত প্যাকেজগুলির জন্য আরও কিছু "চালাক" কৌশল এবং ক্যোয়ারী করতে পারেন

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