কাঁচা ব্লক ডিভাইসের তুলনা


12

এমন কোনও ইউটিলিটি (বা কিছু শেল ম্যাজিক) রয়েছে যা আমাকে দুটি ব্লক ডিভাইসের তুলনা করতে দেয়?

বিশদ: আমার কাছে একটি বৃহত (০.০ টিবি) র‌্যাড ডিভাইস রয়েছে যা আমি ডিডি ব্যবহার করে কিছুটা বড় সাটা ডিভাইসে ব্যাক আপ করেছি। ডিভাইসে এতে কয়েকটি পার্টিশন রয়েছে, তবে আমি 'প্যারেন্ট' ডিভাইস থেকে অনুলিপি করি না পার্টিশনযুক্ত ডিভাইস নোডগুলি (উদাহরণস্বরূপ, আমি / dev / hda নকল করি এবং উদাহরণস্বরূপ / dev / hda1 নয়)।

আমি যাচাই করতে চাই যে ব্যাকআপ ভাল / সঠিক is

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

উত্তর:


13

আমি কমান্ডটি ব্যবহার করব

cmp /dev/hda /dev/hdb

এটি প্রথম ডিফারিং বাইটে থামবে, এর অফসেট লিখবে, বা ইওএফটি সংক্ষিপ্ততর হবে।


ইওএফ-এ থামার বিষয়ে আমি ম্যানপেজে কিছুই দেখতে পাচ্ছি না, এটি কোথাও ডকুমেন্টেড?
কেভিন

প্রকৃতপক্ষে, প্রস্থান স্থিতিটি বলে: "1: ফাইলগুলি পৃথক; এর মধ্যে একটি ফাইলের অপরটির প্রথম অংশের সমান ঘটনা রয়েছে case" এর থেকে বোঝা যাচ্ছে যে এটি যদি সংক্ষিপ্ত হয় তবে এটি তাদের অভিন্ন হিসাবে প্রতিবেদন করে না।
কেভিন

@ কেভিন: থেকে info cmp: "' সিএমপি ' কমান্ড দুটি ফাইলের তুলনা করে এবং যদি সেগুলির মধ্যে পার্থক্য থাকে তবে প্রথম বাইট এবং লাইন নম্বরটি যেখানে তারা পৃথক হয় তা বলে tells"
enzotib

1
আপনি --bytes=LIMITঅপশনটি ব্যবহার করতে পারেন , LIMITছোট ড্রাইভের (বা পার্টিশনের সীমানা) cmpশেষে শূন্য-স্থিতি ছাড়াই প্রস্থান ছাড়াই থামাতে ছোট ডিভাইসের বাইটাইজে মান নির্ধারণ করতে পারেন ।
rozcietrzewiacz

আমার কাছে যদি / dev / sda এর একটি অনুলিপি / dev / loop0 থাকে এবং আমি / dev / loop0 এ পরিবর্তন করি তবে কীভাবে আমি নতুন পরিবর্তনগুলি / dev / sda তে যুক্ত করতে পারবো ?? ধন্যবাদ
মিলোর 123

2

ড্রাইভগুলি আসলে কতটা পূর্ণ তার উপর নির্ভর করে ফাইল সিস্টেমগুলি মাউন্ট করার জন্য এটি দ্রুততম হতে পারে

diff -qr /mnt/root1 /mnt/root2

অন্যথায়, আমি এই জাতীয় কিছু বলব:

diff -q <(dd bs=1M count=500K if=/dev/sda) <(dd bs=1M count=500K if=/dev/sdb)

স্পষ্টতই ছোট্ট ড্রাইভের শেষে আপনার কী পরিমাণ তৈরি করতে হবে bsএবং countথামাতে হবে (বা এটি আরও বেশি সুবিধাজনক হলে তার ঠিক আগে) বের করুন।

অথবা, এনজোটিবের মন্তব্যে ধন্যবাদ, দেখে মনে হচ্ছে আপনি ব্যবহার করতে পারেন cmpতবে -nদুটি ড্রাইভের সংক্ষিপ্ত অংশে বাইটের সংখ্যা সীমাবদ্ধ করার জন্য আপনার পতাকা লাগবে।

cmp /dev/sda /dev/sdb -n 500GB

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

1
@ অ্যালানজজ না, সাবশেলগুলি diffএটি লেখার আগে পুরো ডিভাইসটি পড়বে না। এটি পড়ার সাথে সাথেই বাইটস ddলিখে bsদেয় (বা এখানে নির্দিষ্ট না হলে প্রসেসিং করা হয়) এবং তারা fifoগুলি লেখেন , যেগুলি পড়া না হওয়া অবধি ব্লক করে।
কেভিন

আমি শেল স্তরে আরও চিন্তা করছিলাম (বা যা কিছু ফিফোর প্রয়োগ করে)। কিন্তু যে আমার প্রশ্নের উত্তর!
alanxz

2

আপনি বাইনারি ডিফার সফ্টওয়্যার খুঁজছেন

আরডিফ
ব্যাকআপ এবং নেটওয়ার্ক ট্রান্সমিশনের জন্য ডিজাইন করা হয়েছে, আরডিফ-ব্যাকআপ এবং ব্যাকআপ প্রস্তাবনার জন্য সদৃশ

xdelta3
একটি ওপেন-সোর্স বাইনারি ডিফ , ডিফারেনশিয়াল সংক্ষেপণ সরঞ্জাম, ভিসিডিআইএফএফ (আরএফসি 3284) ডেল্টা সংকোচন।

বিএসডিফও
তো !! ক্ষুধার্ত স্মৃতি, ব্লক ডিভাইসের জন্য উপযুক্ত নয়।


1

বিএসডিফ নামে একটি ইউটিলিটি রয়েছে যা এই ধরণের জিনিসটি করে। এটি সত্যই এটি দ্রুত করে তোলে এবং আপনার প্রয়োজন হলে এটি একটি বাইনারি প্যাচ তৈরি করতে সক্ষম।

চারপাশে কিছু ব্যাখ্যা জন্য এই পোস্টটি দেখুন ।


bsdiffদু'টি ফাইলের তুলনা করার চেয়ে চাকরির কাজটি আরও জটিল, তাই আমি সন্দেহ করি এটি সহজের চেয়ে দ্রুততর হতে পারে cmp
enzotib

লিঙ্কটি নষ্ট হয়ে গেছে।
পলিং

1

আপনি এর মতো দুটি ভিন্ন আকারের ব্লক ডিভাইসগুলির তুলনা করতে পারেন md5sum:

(ধরে নিচ্ছেন ছোট ডিভাইসটি হ'ল /dev/sda)

# md5sum /dev/sda && head -c $(blockdev --getsize64 /dev/sda) /dev/sdb | md5sum

0

fsckব্যাকআপ চালানো বিবেচনা করুন। losetupব্যাকআপে এমবেড থাকা পার্টিশনে সেট করা লুপব্যাক ডিভাইসগুলি পেতে আপনার সাথে কিছু কৌশল খেলতে হবে তবে ফাইল চেকটি যদি বলে যে ফাইলের কাঠামোটি সামঞ্জস্যপূর্ণ হয় তবে ডেটা নিজেই সম্ভবত ভাল।

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

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