বলুন যে আপনার কাছে একটি ফাইল রয়েছে যা আপনি একটি .zip সংরক্ষণাগার রাখতে চান:
zip a1.zip foo.dll
আমার পরীক্ষা .dll ফাইলটি 10MB ডলার এবং সংরক্ষণাগারটি 3.5MB হিসাবে দেখা যায়
তারপরে আপনি ঠিক একই বিষয়বস্তু সহ একটি ফাইল তৈরি করুন এবং এগুলিকে একটি সংরক্ষণাগারে রেখেছেন:
cp foo.dll bar.dll
zip a2.zip foo.dll bar.dll
আপনি আশা করতে পারেন যে জিপটি এই তথ্যটি পুনরাবৃত্তি করার জন্য যথেষ্ট স্মার্ট, এবং .zip এর অভ্যন্তরে কেবল একটি সংকোচনের বস্তু ব্যবহার করে, তবে এটি এমন নয়: a2.zip 7.0MB!
মূলত এ জাতীয় বেশিরভাগ ইউটিলিটিগুলি একইরকম আচরণ করে (তার্ড.জেড, টর.বিজে ২, রোল সলিড মোডে) - কেবল z জিপ আমাকে ধরেছে এবং ফলস্বরূপ a2.7z কেবলমাত্র a1.7z এর চেয়ে সামান্য আকারে বড়।
সুতরাং প্রশ্নটি হল: এই স্থানের অপচয়জন এড়ানো যায় এমন একটি .zip ফাইল তৈরি করা কি সম্ভব ? আমরা সি ++ কোড দিয়ে .zip ফাইল তৈরি করি, যা zlib থেকে মিনিজিপ প্রকল্প ব্যবহার করে।
আমাদের কেন এটা দরকার?
আমরা আমাদের সফ্টওয়্যারটিকে ".Exe ইনস্টলার" এবং ".zip ফাইল" উভয় ফর্মে চালিত করি। সফ্টওয়্যারটির সত্যই ইনস্টলেশন প্রয়োজন হয় না, আপনি কেবল আনজিপ করে এটি ব্যবহার করতে পারেন। .Zip বিকল্পটি বড় ক্লায়েন্টদের দ্বারা পছন্দ করা হয় যার অনেকগুলি ওয়ার্কস্টেশন রয়েছে এবং স্বয়ংক্রিয় স্থাপনা / সফ্টওয়্যার আপডেট পরিষেবা ব্যবহার করে।
আমরা সম্প্রতি তিনটি .dll ফাইল প্রবর্তন করেছি, এখন দুটি ভিন্ন ফোল্ডারে রাখতে হবে, বিভিন্ন উপাদান ব্যবহার করতে হবে (প্রযুক্তিগত কারণে এই ফাইলগুলির জন্য কেবল একটি কেন্দ্রীয় ডিরেক্টরি অসম্ভব)। এই তিনটি .dll ফাইল হ'ল উভয় ফোল্ডারে হুবহু অনুলিপি। .Exe ইনস্টলারটি এটিকে চিত্রিত করে, যেহেতু আমরা এটিকে দুটি গন্তব্যের প্রতিটিটির জন্য ঠিক একই সংকোচিত ব্লব ব্যবহার করার নির্দেশ দিই। তবে এটি জিপ-এর ক্ষেত্রে নয় এবং ফলস্বরূপ ইনস্টলটি 15MB বৃহত্তর, যার অর্থ আরও বেশি ব্যান্ডউইথের ব্যবহার, ধীর ডাউনলোডের সময় এবং সিয়ারিং ইঞ্জিনিয়ার-অসন্তুষ্ট-যে-জিনিসগুলি-অনুকূল-ইস্যু নয় type এছাড়াও, .zip ইনস্টল হঠাৎ করে .exe ইনস্টলের চেয়ে বড় হয়ে যায়, তাই আমাদের জিজ্ঞাসা করা হবে আমরা .exe ইনস্টলটিতে কী বাদ দিয়েছি।
এর কিছু সম্ভাব্য সমাধান রয়েছে,
- --জিপ ব্যবহার করুন : তবে মনিব এর পক্ষে দৃ strongly়রূপে, কারণ এটি উল্লিখিত স্বয়ংক্রিয় মোতায়েনকারী লোকদের তাদের স্ক্রিপ্টগুলিকে--জিপের জন্য সংশোধন করতে বাধ্য করে।
- সিমলিংকগুলি ব্যবহার করুন : আপনি যদি একটি .zip এর ভিতরে একটি সিমলিংক রাখেন, যা .zip এর ভিতরে অন্য কোনও ফাইলকে নির্দেশ করে, এটি রেফারেন্স হিসাবে সংরক্ষণ করা হয় (যেমন
--symlinks
বিকল্পটি ব্যবহার করেzip
)। আশা করা যায়, উইন 32 এর অধীনে অপরিবর্তনকারীরা এগুলি সমর্থন করার জন্য যথেষ্ট হবে এবং ফাইলটির একটি অনুলিপি যেখানে সিমলিংকটি অবস্থিত হওয়া উচিত সেখানে নিয়ে যাবে ract Fe WinRAR এটি করে, তবে প্রচুর প্রোগ্রাম রয়েছে যা ".zip করতে পারে" এবং আমি নিশ্চিত নই যে এটি সমস্ত এইভাবে করে কিনা।