জিপ ফাইলের পরীক্ষার অখণ্ডতা?


21

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

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


2
কি হবে unzip -t?
ফ্ল্লোহিমসেফ

জিপ হিসাবে একই আচরণ।
মার্ক রোচকাইন্ড

উত্তর:


19

আনজিপ -t

সংরক্ষণাগার ফাইল পরীক্ষা করুন।

এই বিকল্পটি প্রতিটি নির্দিষ্ট ফাইলকে মেমোরিতে উত্তোলন করে এবং সিআরসি (সাইক্লিক রিডানডেন্সি চেক, একটি বর্ধিত চেকসাম) মূলের সঞ্চিত সিআরসি মানের সাথে প্রসারিত ফাইলের সাথে তুলনা করে।

[উত্স: https://linux.die.net/man/1/unzip ]


প্রতি ফাইলটিতে 2 টি সিআরসি রয়েছে: স্থানীয় এবং কেন্দ্রীয়। unzip -tকেবল পরেরটি পরীক্ষা করে।
মার্ক রোচকাইন্ড

2
"স্থানীয়" বনাম "কেন্দ্রীয়" (কেন কেন্দ্রীয়?) বলতে আপনি কী বোঝেন তা আমি জানি না তবে আমি যখন "আনজিপ-টি মাইজিপ_ফিল.জিপ" চালাই তখন আমি প্রতিটি জিপ করা ফাইলের অখণ্ডতা সম্পর্কে মন্তব্য করার জন্য একটি লাইন আউটপুট দেখতে পাই , (আরও ভাল ফর্ম্যাটিংয়ের কল্পনা করুন): "পরীক্ষা: AARiseTransitSet.cpp ঠিক আছে পরীক্ষা: AARiseTransitSet.h ঠিক আছে পরীক্ষা: AASaturn.cpp ঠিক আছে পরীক্ষা: AASaturn.h ঠিক আছে ...
থিওফ্রাস্টাস

জিপ ফাইলগুলির অভ্যন্তরীণ কাঠামো ব্যাখ্যা করার জায়গা নয়। উইকেপিডিয়া নিবন্ধটি এতে বেশ ভাল। আমি যেমন বলেছি, এটি একটি বিভ্রান্তিমূলক প্রতিবেদন যা আপনি দেখছেন।
মার্ক রোচকাইন্ড

যদি আমি হেক্স-সম্পাদক দিয়ে একটি জিপ ফাইলে যাই এবং একটি বাইট পরিবর্তন করি তবে আমি একটি ফাইল দেখতে পাচ্ছি: টেস্টিং: AA_sphere.htm খারাপ সিআরসি 7952862e (44c6f7f8 হওয়া উচিত) বাকীগুলি "ঠিক আছে" হিসাবে তালিকাভুক্ত করা হয়েছে। আপনি এটিকে "বিভ্রান্তিমূলক" হিসাবে ঘোষণা করতে থাকবেন, তবে আমি জিপ ফাইলের ফাইল-সি-পি-সি-সি-সি-চেকের জন্য ঠিক প্রত্যাশা করি। এখন ... স্যার আপনাকে শুভকামনা
থিওফ্রাস্টাস

আমি মনে করি আপনি শেষে সেন্ট্রাল ডিরেক্টরি সিআরসি পরিবর্তন করেছেন। ফাইলটির আগে বা পরে লোকালটি পরিবর্তন করে দেখুন।
মার্ক রোচকাইন্ড 21

11

একটি সংরক্ষণাগার স্থির করার চেষ্টাটি স্থানীয় এবং কেন্দ্রীয় সিআরসি তুলনা করে এবং সংরক্ষণাগার পরীক্ষার সাথে একত্রিত করার ফলে সমস্ত সিআরসি পরীক্ষা করা যায়। আপনি যদি চালান

unzip -t archive.zip

এবং

zip -F archive.zip --out archivefix.zip

এবং উভয়ই অভিযোগ করেন না, এর অর্থ সংরক্ষণাগারগুলির বিষয়বস্তু কেন্দ্রীয় এবং স্থানীয় উভয় সিআরসি মিলছে match (আপনি archivefix.zipপরে মুছতে পারেন ।)

এটি যাচাই করতে, zip3.0 -র জন্য তথ্য-জিপ উত্স কোড দিয়ে শুরু করে , আমি নিম্নরূপে একটি ফাইল তৈরি করেছি:

zip -9 test.zip zip.txt zipup.c

আমি তখন zip.txtঅফসেট 0xB137 এ বাইট পরিবর্তন করে কেন্দ্রীয় ডিরেক্টরি সিআরসিটিকে দূষিত করেছি। আপনি যা দেখেছেন তার বিপরীত আচরণ আমি পেয়েছি; unzip -vকেন্দ্রীয় ডিরেক্টরি থেকে পরিবর্তিত সিআরসি রিপোর্ট করেছে, unzip -tএবং zip -Tজানিয়েছে যে ফাইলটি ঠিক আছে (স্থানীয় সিআরসি-র বিরুদ্ধে পরীক্ষা করা হচ্ছে)।

তবে চলছে

zip -F test --out testfix

রিপোর্ট

Fix archive (-F) - assume mostly intact archive
Zip entry offsets do not need adjusting
 copying: zip.txt
        zip warning: Local Entry CRC does not match CD: zip.txt
 copying: zipup.c

"সংশোধন" ফাইলটি এখনও পরিবর্তিত সিআরসি তালিকাভুক্ত করেছে zip.txt

স্থানীয় সিআরসি পরিবর্তনকারী zip.txtএ অফসেট 0x10 উভয় সৃষ্ট unzip -tএবং zip -Tএকটি সিআরসি ত্রুটি প্রতিবেদন, কিন্তু zip -Fকোন ভুল ধরা হয়নি।

সুতরাং আমার পরীক্ষাগুলি থেকে, সংরক্ষণাগার প্রবেশের বিষয়বস্তু এবং এর সিআরসি-র মধ্যে মিল খুঁজে পাওয়া যায় নি:

  • কেবল স্থানীয়: zip -Tএবং unzip -t; zip -Fস্থানীয়-কেন্দ্রীয় মিলহীনতা সম্পর্কেও অভিযোগ করবে
  • স্থানীয় এবং কেন্দ্রীয়: zip -Tএবংunzip -t
  • কেবলমাত্র কেন্দ্রীয়: zip -Tএবং unzip -tঅভিযোগ করবে না, তবে zip -Fস্থানীয়-কেন্দ্রীয় মিল খুঁজে বেড়াবে

(উল্লেখ্য যে ডিফল্টরূপে zip -Tকেবল ব্যবহার unzip -tqq, তাই zip -Tএবং unzip -tসত্যিই হয় সমতুল্য আপনি পড়তে পারেন। unzipযে একটি সংরক্ষণাগার পরীক্ষা সত্যিই স্থানীয় সিআরসি, না কেন্দ্রীয় এক তুলনা চেক করতে সোর্স কোড; জন্য চেহারা extract_or_test_files(), extract_or_test_entrylist()এবং extract_or_test_member(), সমস্ত extract.c।)


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

1
ইউনিক্সের মতো প্ল্যাটফর্মগুলিতে অনেকগুলি সংস্করণ নেই zipএবং unzipউপলভ্য নয়; ইনফো-জিপ সর্বত্র ব্যবহার করা হয়েছে ...
স্টিফেন কিট

1
যতদূর জটিল হচ্ছে এটি মাত্র দুটি কমান্ড নেয়; যদি উভয়ই হয় unzip -tএবং zip -Fত্রুটি ছাড়াই চালানো হয় তবে আপনি ঠিক আছেন এবং উভয় সিআরসি পরীক্ষা করা হয়েছে।
স্টিফেন কিট

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