মূল লেখায় যান
বাংলা
কাজের টেবিলযেসব সরঞ্জাম কিছুই আপলোড করে না
ODERSA সংস্থার একটি কর্মশালাকিছু বাইরে যায় না, কিছু জমা থাকে না, কিছু আমাদের কাছে পৌঁছায় না।

কর্মশালা · zip আর আনজিপ

কীভাবে কাজ করে : zip আর আনজিপ

ব্রাউজার কমপ্রেস করতে জানে, কিন্তু সে CRC-32 হিসাব করতেও জানে না, একটি zip কনটেইনার লিখতেও জানে না: এই দুটি টুকরো এখানে হাতেই লেখা, আর তৈরি হওয়া আর্কাইভটি আপনাকে দেওয়ার আগে আমাদের নিজের পাঠক দিয়েই আবার খোলা হয়।

সরঞ্জামটি খুলুন

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

সে Chrome 103, Firefox 113 আর Safari 16.4 থেকে কাঁচা deflate নামের ফাংশনটি দিয়ে কমপ্রেস আর ডিকমপ্রেস করতে জানে। অন্যদিকে একটি zip আর্কাইভ তার প্রতিটি এন্ট্রির জন্য যে যাচাইয়ের কোডটি দাবি করে সেটি সে হিসাব করতে জানে না, আর কনটেইনারটি নিজেও লিখতে জানে না। এই দুটি টুকরো এই সরঞ্জামে হাতেই লেখা, আমাদের আইকন বানানোর সরঞ্জামটি থেকে কপি করে আনা, কারণ সেখানে ওগুলি আগে থেকেই ছিল: যে ফরম্যাটটি আমরা এখানে একবার লিখে ফেলেছি, সেটি আমরা আবার নতুন করে বানাই না।

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

কীভাবে কাজ করে

  1. আর্কাইভ বানাতে একসঙ্গে কয়েকটি ফাইল রাখুন: সরঞ্জামটি সেগুলির তালিকা দেয়, একটি একটি করে কমপ্রেস করে আর আপনাকে একটি আর্কাইভ ফিরিয়ে দেয়।
  2. খুলতে একটিমাত্র আর্কাইভ রাখুন: সরঞ্জামটি দেখায় তাতে কী কী আছে, প্রতিটি এন্ট্রির আসল মাপসহ, আর আপনি বেছে নেন কোনটি বের করবেন।
  3. দিকটি নিজে থেকেই বোঝা যায়, এক্সটেনশন দেখে নয়, ফাইলটির প্রথম কয়েকটি বাইট দেখে: এক্সটেনশনের নাম বদলে দেওয়া যায়, একটি স্বাক্ষরের যায় না।

গৃহীত ফরম্যাট

একটি আর্কাইভ বানাতে যেকোনো ফাইল; খুলতে একটিমাত্র zip আর্কাইভ। মোডটি বোঝা যায় রাখা ফাইলটির প্রথম চারটি বাইট দেখে, তার নাম দেখে নয়।

যেকোনো ফাইল, আর্কাইভ বানানোর জন্য

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

একটি zip আর্কাইভ, খোলার জন্য

জমা রাখা এন্ট্রি আর deflate-এ কমপ্রেস করা এন্ট্রি পড়া হয়, যাতে সত্যিকারের প্রায় সব আর্কাইভই ঢেকে যায়। এনক্রিপ্ট করা এন্ট্রিগুলির নাম বলে দেওয়া হয় আর সেগুলি সরিয়ে রাখা হয়, আর Zip64 ফরম্যাটের আর্কাইভ কথাটা বলে দিয়েই বাতিল করা হয়। সীমাটি ফরম্যাটটির আদর্শ নথি থেকেই আসে: 65535-এর বেশি এন্ট্রি, বা চার গিগাবাইট ছাড়ানো একটি মাপ।

সামঞ্জস্যের ছক দেখুন

এর সীমা

ফাইলপ্রতি 200 মেগাবাইট

ব্রাউজারের কমপ্রেশন মেমরিতেই কাজ করে, আর মূল ফাইলগুলির সঙ্গে সঙ্গেই গোটা আর্কাইভটিকেও সেখানে আঁটতে হয়। তার বেশি হলে মেমরি ফুরিয়ে যাওয়া ফোন ফলাফল দেওয়ার বদলে ট্যাবটিকেই ক্র্যাশ করিয়ে দেয়: সীমাটি ঘোষণা করা আছে, আর সরঞ্জামটি ভদ্রভাবে ফিরিয়ে দেয়।

পাসওয়ার্ড দিয়ে রক্ষিত আর্কাইভ এখানে খোলে না, আর আমরা তেমন আর্কাইভ বানাইও না

দুটি আলাদা কারণ। খোলার দিকে: zip ফরম্যাটের পুরনো এনক্রিপশনটি দুর্বল বলেই পরিচিত, আর আর্কাইভের আধুনিক এনক্রিপশনটি একটি মালিকানাধীন সম্প্রসারণ যার কয়েকটি রূপ পাশাপাশি চলে; তাই অর্ধেক ডিক্রিপ্ট করার বদলে আমরা এনক্রিপ্ট করা এন্ট্রিগুলির নাম বলে দিই আর সেগুলি সরিয়ে রাখি। লেখার দিকে: একটি ফাইল সত্যিই রক্ষা করতে নিরাপত্তার কোণের “ফাইল এনক্রিপ্ট করুন” সরঞ্জামটি ভালো করে, তার পুরো পদ্ধতিটি দেখিয়ে দিয়ে আর চাবি বানানোর ছয় লক্ষ পাস ঘুরিয়ে, যা কোনো zip-ই করে না।

Zip64 আর্কাইভ বাতিল করা হয়, আর কথাটা বলে দেওয়া হয়

65535টি এন্ট্রি বা চার গিগাবাইট ছাড়িয়ে গেলে ফরম্যাটটি নিজের গণনাগুলি একটি বাড়তি রেকর্ডে রাখে, আর চেনা ঘরগুলি তাদের সর্বোচ্চ মানে গিয়ে আটকে যায়। আমরা ওই রেকর্ডটি পড়ি না: অর্ধেক পড়া একটি আর্কাইভ ফেরত দেওয়ার বদলে সরঞ্জামটি বলে দেয় যে সে সেটি পড়তে জানে না। এই মাপের একটি আর্কাইভ এমনিতেও ওজনের সীমা ছাড়িয়ে যায়।

একটি ডাউনলোড ফোল্ডার আবার বানাতে পারে না

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

কয়েকটি এন্ট্রি বের করতে ব্রাউজারের কাছে একটি অনুমতি চাইতে হয়

একই কাজে দ্বিতীয় ফাইলটি ডাউনলোড হওয়ার সময়েই Chrome “একাধিক ফাইল ডাউনলোড”-এর অনুমতি চায়: তার সোর্স কোড একসঙ্গে পঞ্চাশটি ডাউনলোডে সীমা বেঁধে দেয় আর ঠিকানা না বদলানো পর্যন্ত আপনার উত্তরটি মনে রাখে। Firefox অবশ্য একই পাহারাটি বানানোর চেষ্টা করেছিল আর কখনও সেটি দেয়নি, তাদের নিজের বাগের তালিকাই কথাটা বলে। Safari-র জন্য আমরা প্রথম হাতের কোনো সূত্রই পাইনি। এটি এড়ানো যায় না আর আমরা এড়ানোর চেষ্টাও করি না: পাঠানোগুলির মধ্যে 350 মিলিসেকেন্ড ফাঁক রাখা হয়, আর আপনি চাইলে সবসময়ই একবারে একটি এন্ট্রিই বের করতে পারেন।

আমরা যেসব আর্কাইভ লিখি সেগুলি কোনো তারিখ বয়ে চলে না

একটি zip স্বাভাবিকভাবে প্রতিটি এন্ট্রির সময় জমা রাখে। ফাইলটি আপনার সম্পর্কে একমাত্র ওই তথ্যটুকুই বয়ে নিয়ে যেত, অথচ প্রাপকেরও সেটি লাগে না, ফরম্যাটটিরও নয়। তাই আমরা ফরম্যাটটি যতটা পুরনো তারিখ মেনে নেয় ততটাই লিখি, 1980 সালের 1 জানুয়ারি: একই ফাইল দিয়ে বানানো দুটি আর্কাইভ বাইট ধরে বাইট এক হয়। ছবির কোণের আইকনের আর্কাইভটির ক্ষেত্রেও সিদ্ধান্তটি একই।

এই সরঞ্জাম নিয়ে প্রশ্ন

আমার ফাইলগুলি কি কোথাও পাঠানো হয়?

না। F12 বোতাম দিয়ে ইন্সপেক্টর খুলুন, “Network” ট্যাব, তালিকাটি খালি করুন, তারপর আপনার ফাইলগুলি রেখে আর্কাইভটি বানান: কিছুই বাইরে যায় না। সংযোগ কেটে দিয়ে আবার করুন, সরঞ্জামটি তবুও চলে। আর্কাইভের সরঞ্জামে এটিই সবচেয়ে জরুরি কথা, কারণ মানুষ সেখানে সাধারণত সেই সবকিছুই রাখে যা সে এইমাত্র পাঠাতে যাচ্ছিল।

আমার আর্কাইভটি আমার ফাইলগুলির প্রায় সমান ভারী কেন?

কারণ আপনার ফাইলগুলি সম্ভবত আগে থেকেই কমপ্রেস করা। JPEG ফরম্যাটের একটি ছবি, একটি PDF, একটি ভিডিও, আধুনিক অফিসের একটি ফাইল: সবকটিতেই আগে থেকেই কমপ্রেশন আছে, আর তার উপরে লাভ করার মতো কিছুই নেই। সরঞ্জামটি আপনাকে লাইন ধরে ধরে কথাটা বলে দেয়, আর এই ফাইলগুলিকে আরও বড় করে দেওয়ার বদলে যেমন আছে তেমনই জমা রাখে, কারণ দ্বিতীয়বার কমপ্রেস করলে সেগুলি বড়ই হত। যা ভালো কমপ্রেস হয় তা হল লেখা, পুরনো স্প্রেডশিট, কোডের ফাইল, আর কিছু না হারানো ছবি।

পাতাটি যে আবার পড়ার কথা বলছে, সে ঠিক কী করে?

আর্কাইভটি লেখার পরে সরঞ্জামটি সেটি নিজের পাঠক দিয়ে আবার খোলে, ঠিক যেমন অন্য কোনো সফটওয়্যার করত: সে তালিকাটি খুঁজে বের করে, এন্ট্রিগুলি ঘুরে দেখে, প্রত্যেকটি ডিকমপ্রেস করে আর পাওয়া বাইট থেকে তার যাচাইয়ের কোড নতুন করে হিসাব করে। একটি আর্কাইভের কাঠামো নিখুঁত হয়েও তার যাচাইয়ের কোড ভুল হতে পারে: তখন সে আকারের সব যাচাই পেরিয়ে যেত, আর আপনার প্রাপকের কাছে গিয়ে ব্যর্থ হত। এই সাইটের সব জায়গার মতোই দাবিটি একই: প্রাপ্ত ফাইলটি আবার পড়া হয়, সরঞ্জামের কথায় বিশ্বাস করা হয় না।

বের করা ফাইলগুলির ফোল্ডার নেই কেন?

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

কয়েকটি ফাইল বের করার সময় ব্রাউজার আমার কাছে অনুমতি চায় কেন?

কারণ যে সাইট এক ক্লিকেই কয়েকটি ডাউনলোড শুরু করে দেয় তাকে ব্রাউজারগুলি সন্দেহ করে, আর ঠিকই করে। “একাধিক ফাইল ডাউনলোড”-এর অনুমতিটি একবারই চাওয়া হয়, আর এখানে সেটি দেওয়ায় কোনো ঝুঁকি নেই, যেহেতু ফাইলগুলি আপনার নিজের আর্কাইভ থেকেই আসছে। আমরা পাঠানোগুলির মধ্যে তিনশো পঞ্চাশ মিলিসেকেন্ড ফাঁক রাখি, যাতে সেগুলি একে অন্যকে বাতিল না করে দেয়, আর আপনি চাইলে সবসময়ই একবারে একটি এন্ট্রিই বের করতে পারেন।

আপনারা কি পাসওয়ার্ড দিয়ে রক্ষার সুযোগ যোগ করতে পারেন?

আমরা তার পরিকল্পনা করি না, আর তার একটি মূল কারণ আছে। zip আর্কাইভের পুরনো এনক্রিপশনটি বহুকাল ধরেই দুর্বল বলে পরিচিত; আধুনিক এনক্রিপশনটি ফরম্যাটটির একটি মালিকানাধীন সম্প্রসারণ, কয়েকটি রূপ আর সফটওয়্যারে সফটওয়্যারে তফাতসহ। তাই আমরা অনেক পরিশ্রম করে এমন একটি সুরক্ষা দিতাম যাকে সৎভাবে শক্ত বলতে পারতাম না। নিরাপত্তার কোণের এনক্রিপশনের সরঞ্জামটি আসল সমস্যাটির সমাধান করে: সে তার পুরো পদ্ধতি দেখিয়ে দেয়, চাবি বানানোর ছয় লক্ষ পাস ঘোরায়, আর প্রাপ্ত ফাইলটি একই পাতাতেই ডিক্রিপ্ট হয়।

আমি কি আগে থেকে থাকা একটি আর্কাইভে একটি ফাইল জুড়ে দিতে পারি?

সরাসরি নয়: সরঞ্জামটি একটি আর্কাইভ খোলে বা একটি বানায়, সে সেটি বদলায় না। পথটি হল আপনার দরকারি জিনিসগুলি বের করে নেওয়া, তারপর বাড়তি ফাইলটিসহ সবকিছু আবার রাখা। এটি একটি বাড়তি কাজ, তবে এতে গোটা একটি শ্রেণির অপ্রীতিকর চমক এড়ানো যায়: জায়গায় বসেই বদলে ফেলা একটি আর্কাইভ তার আগের ভিতরের জিনিসের চিহ্ন রেখে দিতে পারে, আর যে সরঞ্জাম পুরোটা নতুন করে না লিখেই একটি আর্কাইভ “হালনাগাদ” করার প্রতিশ্রুতি দেয় সে দেখতে যতটা পরিষ্কার ততটা নয়।