বিটিআরএস বিভাজনে কীভাবে ফাইলগুলি মুছে ফেলা যায়?


19

আমি কীভাবে বিটিআরএস বিভাজনে মুছে ফেলা ফাইলটি মুছে ফেলা (পুনরুদ্ধার) করব?

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

অধিক তথ্য:

  • (দুটি) মুছে ফেলা ফাইলগুলি রিমোট rsyncকমান্ড দ্বারা ভুল হয়ে গেছে by
  • এগুলি ছিল ছোট ছোট সরল পাঠ্য ফাইল।
  • আমি ফাইলগুলির নাম জানি।
  • আমি ফাইলগুলিতে কিছু স্ট্রিং মনে রাখতে সক্ষম হতে পারি।
  • ডিস্কটি একটি নিয়মিত এইচডিডি, তবে এটি বড় (2 টিবি)।
  • আমি সর্বশেষ আপডেটের সাথে কুবুন্টু 12.04 (বিটা 2) চালাচ্ছি।
  • পার্টিশনে ফাইলগুলি মুছে ফেলাতে আমি কোনও নতুন ডেটা লিখিনি।
  • আমার কাছে এই ফাইলগুলির একটি স্ন্যাপশট বা ব্যাকআপ নেই। (শেষ ব্যাকআপটি এই ফাইলগুলির তুলনায় কয়েক ঘন্টা বেশি পুরানো))
  • আশ্চর্যের বিষয় হল, একটি COW ফাইল সিস্টেমে ext3 / 4 এর চেয়ে কম ফাইল অপসারণ বিকল্প রয়েছে ...

উত্তর:


7

আপনার ফাইলগুলি ছোট এবং সরল পাঠ্য হিসাবে, আমি ফাইল সিস্টেমটি যেখানে থাকে তার মধ্যে "স্ট্রিংস" এর আউটপুট স্ক্যান করার চেষ্টা করব,

strings /dev/sda1 | less

তারপরে সেই ফাইলটিতে থাকা স্ট্রিংগুলি অনুসন্ধান করতে "/" ব্যবহার করুন। আপনি যখন পাঠ্যটি সন্ধান করেন, এর শুরুটি "মি" দিয়ে সীমিত করুন তারপরে প্রান্তে যান এবং এটিকে একটি ফাইলে সংরক্ষণ করতে "| ক্যাট> ফাইল" ব্যবহার করুন।

আমি আসলে এটি করেছি যখন কয়েক বছর আগে আমার অপসারণ ছাড়াই অন্য ফাইল সিস্টেমের মতো অবস্থা হয়েছিল এবং এটি আমার পক্ষে দুর্দান্ত কাজ করেছিল।


4

জার্গ ওয়াল্টার btrfs-undeleteসেই সরঞ্জামগুলি find-rootএবং restoreসরঞ্জামগুলি ব্যবহার করে একটি শেল স্ক্রিপ্ট প্রয়োগ করেছেন btrfs-progs, যা এখানে পাওয়া যাবে এবং অন্যকে অনুরূপ অবস্থানে সহায়তা করা উচিত।

এটি জিপিএলভি 2 এর অধীনে লাইসেন্সযুক্ত থাকায় আমি এটিকে এখানে অন্তর্ভুক্ত করতে পারি না।


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

2
এখানে মূল স্ক্রিপ্টটির একটি ক্লিন
চাঙ্গাকো

"এটি জিপিএলভি 2 এর আওতায় লাইসেন্স হিসাবে, আমি এটিকে এখানে অন্তর্ভুক্ত করতে পারি না" - জিপিএলভি 2 কী বলে তা আপনার পড়া উচিত, কারণ এতে কোনও ধারণা নেই।
অপভাষা

4
@ স্ল্যাং সম্ভবত আপনার এই সাইটের পরিষেবার শর্তাদি পড়তে হবে? অবদানগুলি অবশ্যই ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন শেয়ার অ্যালাইক 3.0 লাইসেন্সের আওতায় লাইসেন্স হওয়া উচিত।
suriv

@ সুরিভ - আমার ধারণা আমি এটি করার কারণগুলি বুঝতে পারি তবে এটি বেশ বিরক্তিকর। বিশেষত যেহেতু সিসি-বাই-এসএ জিপিএল (জিপিএলভি 3 এস পেটেন্ট স্টাফ বাদে) কেবলমাত্র কিছুটা বেশি বাধাবদ্ধ।
সর্বময়

2

আপনার বিটিআরএফএস ড্রাইভে যদি সাব-ভলিউম থাকে তবে আপনাকে অতিরিক্ত -r <subvol-id>বিকল্পটি পাস করতে হবে btrfs restore। দুর্ভাগ্যক্রমে সেখানে স্ক্রিপ্টগুলি যেমন একটি ইউজার 414471 পোস্ট করেছে ( http://oelkers.de/tips/undeleteBtrfs.sh ) এর মতো করার জন্য কোনও বিকল্প নেই, তবে তারা সম্ভবত এটির সাথে মানিয়ে নিতে পারে।

আপনি যদি হাত দিয়ে এটি করতে চান তবে আপনার সাথে ডান সাবভল-আইডিটি অর্জন করতে হবে:

# mount /dev/sdXY /mnt/blah
# btrfs subvolume list /mnt/blah
# umount /mnt/blah

অথবা বিকল্পভাবে এর সাথে:

# btrfs restore -l /dev/sdXY | grep ROOT_ITEM

এরপরে আপনি btrfs-find-rootযে ব্লক নম্বরটি ফিরে যেতে চান তা পেতে ব্যবহার করুন (সাধারণত এটি সর্বাধিকের একটি যা বর্তমান রুট is এর জন্য আপনাকে প্রথমে ডিফল্ট সাবভলিউম সেট করতে হবে যার থেকে আপনি ফাইলগুলি পুনরায় ফিরিয়ে আনতে চান (এবং পরে এই পরিবর্তনটি আবার ফিরিয়ে দিন):

# mount /dev/sdXY /mnt/blah
# btrfs subvolume set-default <subvol-id> /mnt/blah
# umount /mnt/blah
# btrfs-find-root /dev/sdXY
Well block 4321280 seems great, but generation doesn't match, have=400760, want=400984 level 0
...
Well block 9928704 seems great, but generation doesn't match, have=400764, want=400984 level 1
Well block 1094836224 seems great, but generation doesn't match, have=400983, want=400984 level 1
Found tree root at 1095270400 gen 400984 level 1

আপনি পরিশেষে ব্যবহার করতে পারেন btrfs restoreসঙ্গে -r <subvol-id>পুনরুদ্ধারের জন্য (প্রথমদিকে সঙ্গে --dry-runযুক্তি যদি আপনি চান):

# btrfs restore -r <subvol-id> -t 9928704 -v --path-regex '^/(|dir1(|/dir2(|/dir3(|/.*))))$' /dev/sdXY /tmp/recovery

এই সমস্ত সম্পর্কে আরও তথ্য এখানে: https://btrfs.wiki.kernel.org/index.php/ রিস্টোর


এটি ফেডোরা 26 সিস্টেমে পরীক্ষিত হয়েছে - এবং সেখানে btrfs-find-rootপদক্ষেপটি কখনই শেষ হয় না (অর্থাত্ <250 গিগাবাইট এফএসে 3 ঘন্টা 100% সিপিইউতে চলে)। একটি অনুরূপ গল্প স্পিনিকস.এন.এললিস্টস / লিঙ্কস-বিআরটিএফস / এসএমজি 61361.html দেখুন
ম্যাক্সচলেপজিগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.