একটি সংরক্ষণাগার স্থির করার চেষ্টাটি স্থানীয় এবং কেন্দ্রীয় সিআরসি তুলনা করে এবং সংরক্ষণাগার পরীক্ষার সাথে একত্রিত করার ফলে সমস্ত সিআরসি পরীক্ষা করা যায়। আপনি যদি চালান
unzip -t archive.zip
এবং
zip -F archive.zip --out archivefix.zip
এবং উভয়ই অভিযোগ করেন না, এর অর্থ সংরক্ষণাগারগুলির বিষয়বস্তু কেন্দ্রীয় এবং স্থানীয় উভয় সিআরসি মিলছে match (আপনি archivefix.zip
পরে মুছতে পারেন ।)
এটি যাচাই করতে, zip
3.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
।)
unzip -t
?