ডিটারুপ হিসাবে বিটিআরএফএস কো ব্যবহার করে এমন কোনও ডুপ্লিকেশন স্ক্রিপ্ট রয়েছে?


9

লিনাক্সে নকল সরঞ্জামের সন্ধানের জন্য প্রচুর পরিমাণে রয়েছে, উদাহরণস্বরূপ দেখুন এই উইকি পৃষ্ঠা

প্রায় সমস্ত স্ক্রিপ্টই হয় কেবল সনাক্তকরণ, ডুপ্লিকেট ফাইলের নাম মুদ্রণ করা বা নকল ফাইলগুলি একক অনুলিতে হার্ডলিঙ্ক করে মুছে ফেলা।

বিটিআরএফএসের উত্থানের সাথে সাথে আরও একটি বিকল্প থাকবে: একটি ফাইলের (যেমন cp reflink=always) অনুলিপি (অনুলিপি ) তৈরি করা। আমি এমন কোনও সরঞ্জাম খুঁজে পাইনি যা এটি করে, কেউ কি এই সরঞ্জামটি সম্পর্কে সচেতন?


আপডেট: rmlint এর বিকাশকারী শাখা, এবং আমি বিশ্বাস করি যে এটিও মাস্টার অন্তর্ভুক্ত রয়েছে: 1) বর্ধিত ফাইল হ্যাশিং। এটি কোনও ফাইল পুনরায় হ্যাশ করবে না, যদি না এটি শেষ দৌড় থেকে পরিবর্তন হয় [যে বিশাল]। 2) বর্ধিত ছাড়পত্র । এটি কেবল এমন ফাইলগুলিকেই কেটে দেয় যা ইতিমধ্যে হয়নি বা পরিবর্তিত হয়নি। [এটি এমনকি হুগ্রহ।] অন্যান্য সমস্ত দ্রুত-তুলনামূলক পদ্ধতি ব্যর্থ হওয়ার পরে কেবল হ্যাশিং ফাইলের সাথে একত্রিত হয়ে এটি অপরাজেয় করে তোলে। বেডআপ পরিত্যাজ্য এবং স্পষ্টতই সংকলন করবে না। আমি একটি বিশদ তুলনা করেছি: docs.google.com/spreadsheets/d/…
জিম

উত্তর:


17

এই উদ্দেশ্যে আমি বেডআপ লিখেছিলাম । এটি কো-ডেডুপেশন এর সাথে ইনক্রিমেন্টাল বিটি স্ক্যানের সম্মিলন করে। লিনাক্স ৩.6 এর সাথে সর্বাধিক ব্যবহৃত, যেখানে আপনি চালাতে পারেন:

sudo bedup dedup

হাই @ গ্যাব্রিয়েল, নীচে আমার উত্তরের মন্তব্যে বলা হয়েছে যে "... বেডআপ ... জিনিসগুলি আকারের বালতিতে রাখুন এবং প্রয়োজনে চেকসাম তৈরি করতে কেবল পুরো ফাইলটি পড়ুন" " এটা কি সত্যি? যদি তা হয় তবে আমি নীচে আমার উত্তর আপডেট করতে চাই। (এবং নিজেই বিছানা ব্যবহার করুন!) দুর্ভাগ্যক্রমে আমি এটি কোথাও যাচাই করতে পারিনি। আমি গুগল চেষ্টা করেছি, আপনার গিথুব পৃষ্ঠায় অনুসন্ধান করেছি এবং কোডটিতে অনুসন্ধান করেছি। ধন্যবাদ।
জিম

4

আমি শোবার চেষ্টা করলাম। ভাল (এবং কিছু দরকারী আলাদা আলাদা বৈশিষ্ট্য রয়েছে যা এটি অনেকের পক্ষে সেরা পছন্দ করে তুলতে পারে), মনে হয় চেকসামের জন্য সমস্ত টার্গেট ফাইলের সম্পূর্ণতা স্ক্যান করে।

যা বেদনাদায়ক ধীর।

অন্যদিকে অন্যান্য প্রোগ্রাম, যেমন rdfind এবং rMLint, আলাদাভাবে স্ক্যান করে।

আরডিফাইন্ডে বিটিআরএফস রিফ্লিংক ব্যবহারের জন্য একটি "পরীক্ষামূলক" বৈশিষ্ট্য রয়েছে। (এবং হার্ডলিঙ্কস, সিমলিঙ্কস ইত্যাদির জন্য "শক্ত" বিকল্পগুলি)

আরটিএমএলিন্টে বিটিআরএফএস ক্লোন, রিফ্লিংক, নিয়মিত হার্ডলিঙ্কস, সিমলিঙ্কস, মুছুন এবং আপনার নিজস্ব কাস্টম কমান্ডের জন্য "শক্ত" বিকল্প রয়েছে।

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

  • কেবলমাত্র পথ এবং ফাইলাইজগুলি সংগ্রহ করে পুরো টার্গেটের ফাইল সিস্টেমটি স্ক্যান করুন।
  • বিবেচনা থেকে সরান, অনন্য ফাইল আকারযুক্ত ফাইল। এটি কেবলমাত্র সময় এবং ডিস্ক ক্রিয়াকলাপ সংরক্ষণ করে। ("স্ক্যাডস" হ'ল কিছু বিপরীত সূচকীয় ফাংশন বা কিছু)
  • বাকি প্রার্থীদের মধ্যে প্রথম এন বাইট স্ক্যান করুন। বিবেচনা থেকে সরান, একই ফাইল আকারযুক্ত তবে পৃথক প্রথম এন বাইটগুলি।
  • সর্বশেষ এন বাইটের জন্য একই করুন।
  • কেবলমাত্র (সাধারণত ক্ষুদ্র ভগ্নাংশ) অবশিষ্ট রয়েছে, চেকসামগুলির জন্য স্ক্যান করুন।

RMLint এর অন্যান্য সুবিধাগুলি সম্পর্কে আমি সচেতন:

  • আপনি চেকসাম নির্দিষ্ট করতে পারেন। এমডি 5 খুব ভয়ঙ্কর? Sha256 চেষ্টা করুন। অথবা 512. অথবা বিট-বিট-তুলনা। বা আপনার নিজস্ব হ্যাশিং ফাংশন।
  • এটি আপনাকে রিফ্লিংক না করে Btrfs "ক্লোন" এবং "রিফ্লিংক" এর বিকল্প দেয়। "সিপি --রেফ্লিংক = সর্বদা" কিছুটা ঝুঁকিপূর্ণ, এটি কোনও পারমাণবিক নয়, কার্নেলের মধ্যে সেই ফাইলটির জন্য আর কী চলছে তা অবগত নয় এবং এটি সর্বদা মেটাডেটা সংরক্ষণ করে না। "ক্লোন", ওটিওএইচ (যা সংক্ষিপ্ত শব্দটি ... আমি অফিসিয়াল এপিআই-সম্পর্কিত নামটি ফাঁকা করছি), এটি একটি কর্নেল-স্তরের কল যা পারমাণবিক এবং মেটাডেটা সংরক্ষণ করে। প্রায় সর্বদা একই জিনিস ফলে, কিন্তু একটি বাচ্চা আরও মজবুত এবং নিরাপদ। (যদিও বেশিরভাগ প্রোগ্রামগুলি ডুপ্লিকেট ফাইলটি মুছতে না পারার পক্ষে যথেষ্ট স্মার্ট, যদি এটি প্রথমে অন্যটির সাথে সফলভাবে কোনও টেম্পল রিফ্লিংক করতে না পারে))
  • এটিতে অনেকগুলি ব্যবহারের ক্ষেত্রে একটি টন বিকল্প রয়েছে (এটিও একটি অপূর্ণতা)।

আমি আরডিএমএলিন্টকে ডিডাপ্রেমোভের সাথে তুলনা করেছি - যা চেকসামের জন্য প্রতিটি টার্গেট ফাইল অন্ধভাবে স্ক্যান করে। ডুপ্রেমভ আমার ভলিউমটি সম্পূর্ণ করতে বেশ কয়েক দিন সময় নিয়েছিল (4 আমি মনে করি), সম্পূর্ণ কাত হয়ে যাচ্ছি। ডুপ্লিকেট সনাক্ত করতে fmlint কয়েক ঘন্টা সময় নিয়েছে, তারপরে বিটিআরএফএস ক্লোন দিয়ে সেগুলি নেওয়ার জন্য এক দিনেরও কম সময় লাগবে।

(এতে বলা হয়েছে যে, যে কেউ गुणवत्ता, শক্তিশালী সফ্টওয়্যার লেখার এবং সমর্থন করার জন্য প্রচেষ্টা চালিয়ে যাচ্ছে, এটি বড় কুডোর প্রাপ্য!)

বিটিডব্লিউ : আপনার যে কোনও মূল্যে "সাধারণ" ডিডআপ সমাধান হিসাবে নিয়মিত হার্ডলিঙ্কগুলি ব্যবহার করে ছাড় দেওয়া উচিত।

যদিও হার্ডলিঙ্কগুলি নির্দিষ্ট টার্গেটেড ব্যবহারের ক্ষেত্রে অত্যন্ত কার্যকর হতে পারে (যেমন পৃথক ফাইল বা এমন একটি সরঞ্জাম যা নির্দিষ্ট ফাইলের জন্য কিছু ন্যূনতম আকারের বেশি স্ক্যান করতে পারে - অথবা অনেকগুলি নিখরচায় এবং বাণিজ্যিক ব্যাকআপ / স্ন্যাপশট সমাধানের অংশ হিসাবে) এটি বিপর্যয়কর হতে পারে একটি বৃহত সাধারণ-ব্যবহৃত ফাইল সিস্টেমের "অনুলিপি" এর জন্য। কারণটি হ'ল বেশিরভাগ ব্যবহারকারীদের ফাইল সিস্টেমে কয়েক হাজার ফাইল থাকতে পারে যা বাইনারি অভিন্ন, তবে কার্যত সম্পূর্ণ আলাদা।

উদাহরণস্বরূপ, অনেক প্রোগ্রাম টেম্পলেট এবং / অথবা লুকানো সেটিংস ফাইল তৈরি করে (কখনও কখনও এটি প্রতিটি ফোল্ডারে এটি দেখতে পারে), যা প্রাথমিকভাবে অভিন্ন - এবং বেশিরভাগ ক্ষেত্রেই থাকে, যতক্ষণ না আপনার, ব্যবহারকারীকে সেগুলি হওয়ার দরকার নেই।

একটি নির্দিষ্ট চিত্র হিসাবে: ফটো থাম্বনেইল ক্যাশে ফাইলগুলি, যা ফটোগুলিতে থাকা অগণিত প্রোগ্রামগুলি ফটোগুলি তৈরি করে (এবং সঙ্গত কারণে - বহনযোগ্যতা), উত্পন্ন করতে কয়েক ঘন্টা বা দিন সময় নিতে পারে তবে একটি ফটো অ্যাপ্লিকেশনকে বাতাস ব্যবহার করে। যদি সেই প্রাথমিক ক্যাশে ফাইলগুলি সবই একসাথে হার্ড লিঙ্কযুক্ত থাকে, তবে আপনি পরে কোনও ডিরেক্টরিতে অ্যাপ্লিকেশনটি খুলুন এবং এটি একটি বৃহত্তর ক্যাশে তৈরি করে ... তবে কী অনুমান করুন: এখন প্রতিটি ফোল্ডারে আগের হার্ডলিঙ্কযুক্ত ক্যাশে রয়েছে, এখন ভুল ক্যাশে রয়েছে। সম্ভাব্য, বিপর্যয়কর ফলাফল সহ যা দুর্ঘটনাজনিত ডেটা ধ্বংস হতে পারে। এবং সম্ভাব্যভাবে এমন কোনও উপায়ে ব্যাকআপ সমাধানের বিস্ফোরণ ঘটে যা হার্ডলিঙ্ক-সচেতন নয়।

তদতিরিক্ত, এটি সম্পূর্ণ স্ন্যাপশট নষ্ট করতে পারে। স্ন্যাপশটগুলির পুরো বিন্দুটি যাতে "লাইভ" সংস্করণটি আগের অবস্থায় ফিরে যেতে সক্ষম হয়ে পরিবর্তন চালিয়ে যেতে পারে। সবকিছু যদি এক সাথে সংযুক্ত থাকে তবে ... আপনি একই জিনিসটিতে "ফিরে যান"।

তবে সুসংবাদটি হ'ল বিটিআরএফএস ক্লোন / রিফ্লিংকটি কেটে নেওয়া সেই ক্ষতিটিকে পূর্বাবস্থায় ফিরিয়ে আনতে পারে (আমি মনে করি - যেহেতু স্ক্যান চলাকালীন, এটি হার্ডলিঙ্কযুক্ত ফাইলগুলি অভিন্ন হিসাবে দেখা উচিত ... যদি না এটি হার্ডলিঙ্কগুলি বিবেচনা না করার যুক্তি না থাকে তবে সম্ভবত এটি নির্ভর করে ডিপোপিংয়ের জন্য নির্দিষ্ট ইউটিলিটি)


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

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

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