এই সদৃশ এসডি কার্ডগুলিতে তাদের বিষয়বস্তুর জন্য কেন বিভিন্ন sha1sums রয়েছে?


17

আমার কাছে বিভিন্ন নির্মাতাদের ক্লাস 10 ইউএইচএস -1 এসডিএইচসি এসডি কার্ডের একটি গুচ্ছ রয়েছে। এগুলি সমস্ত নিম্নরূপে বিভক্ত হয়

 $ sudo fdisk -l /dev/sdj
Disk /dev/sdj: 14.9 GiB, 15931539456 bytes, 31116288 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0000de21

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdj1          2048  1050623  1048576  512M  c W95 FAT32 (LBA)
/dev/sdj2       1050624  2099199  1048576  512M 83 Linux
/dev/sdj3       2099200  3147775  1048576  512M 83 Linux
/dev/sdj4       3147776 31116287 27968512 13.3G 83 Linux

আমি ছবিগুলি অনুলিপি করতে একটি মেমরি কার্ড সদৃশ ব্যবহার । সমস্ত কার্ডে একই বিষয়বস্তু রয়েছে।

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

 $ sudo mount -o ro /dev/sdg2 /mnt/system-a/
 $ sudo mount -o ro /dev/sdj2 /mnt/system-b/
 $ diff -r --no-derefence /mnt/system-a /mnt/system-b/
 $ # prints nothing^

যাইহোক, আমি পার্টিশনের sha1sum তুলনা করি, তারা কখনও কখনও পৃথক

 $ sudo dd if=/dev/sdg2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.3448 s, 43.5 MB/s
ee7a16a8d7262ccc6a2e6974e8026f78df445e72  -

 $ sudo dd if=/dev/sdj2 | sha1sum
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.6412 s, 42.5 MB/s
4bb6e3e5f3e47dc6cedc6cf8ed327ca2ca7cd7c4  -

অপরিচিত, যদি আমি এই দুটি ড্রাইভের সাথে বাইনারি ডিফিংয়ের মতো সরঞ্জাম ব্যবহার করে তুলনা করি তবে আমি radiff2নিম্নলিখিতটি দেখতে পাচ্ছি

 $ sudo dd if=/dev/sdg2 of=sdg2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2378 s, 43.9 MB/s

 $ sudo dd if=/dev/sdj2 of=sdj2.img
1048576+0 records in
1048576+0 records out
536870912 bytes (537 MB) copied, 12.2315 s, 43.9 MB/s

 $ radiff2 -c sdg2.img sdj2.img
767368

767368 পরিবর্তনগুলি, যদিও diffসামগ্রীতে কোনও পার্থক্য দেখেনি!

এবং বিচক্ষণতার জন্য, যদি আমি দুটি পার্টিশনগুলির তুলনা করি যা একই শে 1 সাম ছিল তবে আমি নিম্নলিখিতটি দেখতে পাচ্ছি

 $ radiff2 -c sdj2.img sdf2.img
0

0 পরিবর্তন!

এখানে বিভিন্ন কার্ড থেকে আমি দেখতে পাচ্ছি বিভিন্ন sha1sums এর একটি ব্রেকডাউন। দেখে মনে হচ্ছে কার্ডটি প্রস্তুতকারক যখন ড্রাইভ পড়ার জন্য আমি ডিডি ব্যবহার করি তখন কী শামসাম পাই তা তার উপর একটি বড় প্রভাব ফেলে।

এখানে চিত্র বর্ণনা লিখুন

Sha1sums এর মধ্যে পার্থক্য থাকা সত্ত্বেও, এই সমস্ত কার্ডগুলি আমার উদ্দেশ্যে কাজ করে। তবে এটি অখণ্ডতা যাচাই করা কঠিন করে তুলছে কারণ আমি sha1sums এর তুলনা করতে পারি না।

এটি কীভাবে সম্ভব যে দুটি এসডি কার্ড পার্টিশনে বিভিন্ন sha1sums থাকতে পারে, তবুও মাউন্ট করার সময় সঠিক একই সামগ্রী থাকতে পারে?


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


3
এমন গুচ্ছ কার্ড নিয়ে আপনি কী ধরণের পরীক্ষা করছেন? :)
hjk

আপনি এগুলি মাউন্ট করার পরে যদি সেগুলি তুলনা করে থাকেন তবে এতে আপনার সমস্যা রয়েছে।
ডেভিড হোলজার

উত্তর:


18

আপনি তাদের বিষয়বস্তু তুলনা করলা অবিলম্বে সদৃশ বিষয়বস্তু লেখার পরে? যদি হ্যাঁ, তবে তাদের ঠিক একই রকম হওয়া উচিত । উদাহরণ স্বরূপ,

# Duplicate
dd bs=16M if=/dev/sdg of=/dev/sdk

# Comparing should produce no output
cmp /dev/sdg /dev/sdk
# Compare, listing each byte difference; also no output
cmp -l /dev/sdg /dev/sdk

কার্ডগুলির যদি একই আকার থাকে তবে এটি কেবল সত্য। কখনও কখনও একই কার্ড প্রস্তুতকারক এবং মডেল এমনকি বিভিন্ন ব্যাচ কিছুটা ভিন্ন আকারের সাথে আসে। blockdev --getsize64ডিভাইসের সঠিক আকার পেতে ব্যবহার করুন ।

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

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


ওপি ব্যবহার করা দরকারblockdev --getsize64 ? দেখে মনে হচ্ছে ddএটি পড়ার পরিমাণের পরিমাণ ঘোষণা করছে।
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'

3
EIBTI। আকার জিজ্ঞাসা করা এটি সত্যিই পরিষ্কার করে তোলে। ddএটি কতটা অনুলিপি করেছে তা জানাবে । কোনও চিত্রের ফাইলের মধ্যে আকারের মিল নেই, একটি ডিভাইসের আকার এবং অন্য ডিভাইসের আকার ইত্যাদি ... ... এটি উত্স, বর্ণনামূলক বা উভয়ের আকার হতে পারে।
সেলেদা

তুমি ঠিক বলছো. তাদের হওয়া উচিত এবং তারা ঠিক একই রকম। এটি আরও খতিয়ে দেখার পরে আমি দেখতে পেলাম যে আমার সিস্টোর ডুপ্লিকেটারে অনুলিপিটি সেটিংয়ের কারণে হয়েছিল। যখন আমি ddআমার কম্পিউটার থেকে এসডি কার্ডগুলি (যেমন আমি ডুপ্লিকেটারের জন্য মাস্টার ইমেজটি দিয়েছিলাম) তখন সমস্ত শামস মিলছে। আমি সিস্টোরের সেটিংসগুলিকে "সিস্টেম এবং ফাইল ডেটা কেবল" থেকে "পুরো মিডিয়া" তে পরিবর্তন করেছি এবং এখন সমস্ত নকল কার্ডের সাথে ম্যাচিং শামস রয়েছে
peskal

8

সেলাদের উত্তরের ভিত্তিতে: একদিকে আপনি diffদুটি মাউন্ট করা ফাইল সিস্টেমের মধ্যে একটি (পুনরাবৃত্ত) করছেন । অন্যদিকে, আপনি ফাইল সিস্টেমগুলি মাউন্ট করার পরে - দৃশ্যত, ফাইলগুলি রয়েছে এমন ডিভাইসের মধ্যে বাইনারি তুলনা করছেন । এটি আপেল এবং ডালিম।

মাউন্ট করা ফাইলসিস্টেম স্তরের অপারেশন কেবলমাত্র ফাইল সিস্টেমে ফাইলগুলির ডেটা সামগ্রী দেখতে পারে। ডিভাইসগুলির মধ্যে বাইনারি তুলনা ডেটা এবং মেটাডেটা দেখায় । আমি 767368 পার্থক্য দেখে কিছুটা অবাক হলাম তবে আমি কয়েকটি অনুমান করতে পারি:

  • আপনি যখন একটি ফাইল সিস্টেম মাউন্ট করেন, কার্নেল বর্তমান সময়টিকে "সিস্টেমের মাউন্ট টাইম" হিসাবে ফাইল সিস্টেম সুপারব্লকে লিখে দেয়। যদি আপনি উভয় ডিভাইস মাউন্ট করেছেন (এবং ঠিক একই সময়ে নয়), সুপারব্লকগুলিতে "মাউন্ট টাইম" আলাদা হবে।
  • আপনি যদি পুনরাবৃত্ত ফাইল সিস্টেমের পরে ডিভাইস-স্তরের বাইনারি তুলনা diffকরে থাকেন তবে প্রতিটি ডিভাইসের প্রতিটি ফাইলের অ্যাক্সেসের সময়টি (ইনোডে) আপডেট হবে।

পিএস আপনার ddএত ব্যবহার দরকার ? কি করলে radiff2 -c /dev/sdg2 /dev/sdj2 বা হয় sha1sum /dev/sdg2?


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

(1) না, যেমন আপনার সন্দেহ (যেমন আপনার অভিজ্ঞতার সাথে সামঞ্জস্যপূর্ণ), কোনও ফাইল সিস্টেমকে ro(কেবল পঠনযোগ্য) হিসাবে মাউন্ট করার ফলে কোনও পরিবর্তন হওয়ার (বা অনুমতি দেওয়া) হওয়া উচিত নয় । (যদিও আমি এক বা দুটি ক্ষেত্রে সফ্টওয়্যারটি যা করা উচিত তা বাদ দিয়ে অন্য কিছু করতে দেখেছে)) (২) আপনার মন্তব্যগুলি পড়ার পরে (প্রতিটি লেখার সময় একটি উত্তর, এই লেখার সময়), এখনও আমি বেশ কিছু বুঝতে পারি না ঘটেছিলো. আপনি কি দয়া করে আপনার প্রশ্নটি সম্পাদনা করবেন বা যে পরিস্থিতিতে আপনি তুলনার ব্যর্থতা পেয়েছেন (যেমন, এটির পার্থক্যগুলি পাওয়া গেছে) তার সদৃশ হওয়ার পরে (মাউন্টিংয়ের আগে) তাত্ক্ষণিকভাবে একটি উত্তর পোস্ট করবেন, ... (চালনা করুন)
জি-ম্যান বলছেন 'পুনরায় প্রতিষ্ঠিত মনিকা'

(চালিয়ে যাওয়া) ... এবং এটি সমাধান করার জন্য আপনি কী করেছেন? (3) আমি এটি পছন্দ করি তবে এটিকে কি "UUOD", "UUODD", বা "UUDD" বলা উচিত? আমি "ইউইউডিডি" এর পক্ষে ভোট দিই, তবে আমাদের সম্ভবত এটি মেটাতে নেওয়া উচিত। :-) ⁠
জি-ম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.