اساسيات الحاسوب

ما هو ضغط الملفات

الضغط يعني كتابة المعلومات نفسها ببايتات أقل. وله عائلتان: بلا فقد، مثل ZIP وRAR، ويعيد الملف الأصلي بايتا ببايت، وبفقد، وهو ما يحدث للصور والصوت والفيديو، ويرمي جزءا من التفاصيل إلى الأبد ليصغر كثيرا.

  • الدرس 7 من 12
  • مبتدئ
  • مجاني، دون تسجيل

يدخل كثير، ويمر قليل، ويخرج الشيء نفسه

ما تضعه بداخله

  • مجلد مستندات
  • جداول بيانات وشيفرة
  • نص مليء بالتكرار
أرشيف واحد

ما يخرج منه

  • المستندات نفسها
  • جداول البيانات والشيفرة نفسها
  • النص نفسه، بلا حرف ناقص

هذا الشكل يصف الضغط بلا فقد فقط. أما في الضغط بفقد فما يخرج من الأسفل لم يعد بايتا ببايت ما دخل من الأعلى.

آخر مراجعة: تُراجع الحقائق وأسماء الأدوات في هذا الدرس مقابل مصادرها في هذا التاريخ.

ماذا يفعل الضغط فعليا

الضغط يعني كتابة المحتوى نفسه ببايتات أقل عبر إيجاد التكرار. والفكرة أبسط مما تبدو. فإن ورد في نص ما كلمة «مرحبا» ثلاثين مرة، فبدل كتابتها ثلاثين مرة تكتبها مرة واحدة وتشير إليها تسعا وعشرين مرة. والبرنامج الذي يفتح الملف يعيد بناء النص الأصلي من تلك الإشارات.

وكلما زاد التكرار في ملف، زاد انكماشه. والنص مليء بالتكرار وهو الأكثر ربحا.

وإليك مثالا من هذا الموقع نفسه: ملف تنسيق قالب rgb.ir حجمه ١٢٩ كيلوبايت كما هو. والملف نفسه عبر gzip يصير ٣٢ كيلوبايت. أي نحو الربع، من دون أن يضيع منه حرف واحد.

ما هو ضغط الملفات ومتى يوفر مساحة فعلا

بلا فقد أم بفقد: الفرق الذي يحسم كل شيء

هذا هو التقسيم الوحيد الذي يهم فعلا في الضغط، وكل ما عداه تفاصيل تحته.

الضغط بلا فقد يَعِد بأن الملف الخارج هو بايتا ببايت الملف الذي دخل. وZIP وRAR و7z وgzip كلها من هذه العائلة. وللمستندات والشيفرة وجداول البيانات وكل ما يهم فيه بايت واحد، هذه العائلة هي الصالحة وحدها.

أما الضغط بفقد فيَعِد وعدا آخر: سأصغّره كثيرا، بشرط أن تسمح لي برمي أشياء لا تلحظها عين الإنسان وأذنه عادة. وصورة JPEG ومقطع MP3 وفيديو MP4 كلها ثمرة تلك المقايضة. وما رُمي لا يعود. وإعادة فتح الملف لا تحيي التفاصيل الضائعة، لأنها لم تعد داخل الملف.

وثمة طريقة بسيطة لرؤية الفرق. ضغطنا ملفا باستخدام gzip ثم فتحناه ثانية، فكانت البصمة الرقمية للنسختين متطابقة تماما؛ وهو ما نسميه المجموع الاختباري في درس تثبيت البرامج بأمان. ولا ينجح أي ملف مضغوط بفقد في هذا الاختبار، ولا يُفترض به أن ينجح.

عائلتان ومهمتان مختلفتان

بلا فقد: ZIP وRAR وgzip

  • يعود الملف بايتا ببايت.
  • للمستندات والشيفرة وجداول البيانات.
  • أكبر ربح له على النص.
  • لا شيء تقريبا على ملف مضغوط سلفا.

بفقد: JPEG وMP3 وMP4

  • التفاصيل المرمية لا تعود.
  • للصور والصوت والفيديو.
  • أصغر بأضعاف من بلا فقد.
  • كل حفظ جديد يضيف تلفا جديدا.

لا أحدهما أفضل من الآخر. والاختيار الخاطئ هو حفظ مستند بفقد وصورة صفحة ويب بلا فقد.

لماذا لا يوفر ضغط مجلد الصور شيئا

سأل الجميع هذا السؤال مرة، وجوابه جملة واحدة: لأن تلك الملفات مضغوطة سلفا. فصورة JPEG أو WebP ومقطع MP3 وفيديو MP4 كلها ثمرة ضغط ثقيل، ولم يبق فيها تكرار يجده ZIP.

جرّبنا ذلك على هذا الخادم. صورة WebP واحدة من مكتبة وسائط الموقع، ٥٤٩ كيلوبايت. ضغطناها باستخدام gzip بأعلى درجة فخرجت النتيجة أكبر من الأصل بمقدار ١١٥ بايتا. أكبر لا أصغر. والسبب معقول: لم يبق شيء ليُجمَع، وكل ملف مضغوط يحمل بضعة بايتات من الترويسة تُضاف فوقه.

فضغط مجلد صور ليس عديم الفائدة، لكن فائدته شيء آخر. إنه يحوّل عشرات الملفات إلى ملف واحد أسهل في الإرسال ولا يفقد أجزاء في الطريق. وإن كان هدفك تخفيف الوزن فعليك بالصور نفسها لا بتغليفها. وذلك موضوع درس صيغ الصور.

كم يصغّر الضغط بفقد فعلا

ذكر رقم هنا بلا معنى إلا على صورة بعينها، فأخذنا صورة حقيقية من مكتبة وسائط هذا الموقع، بأبعاد ٢٥٤٤ في ١٩٠٤ بكسل، وحفظناها عدة مرات بإعدادات مختلفة.

بصيغة PNG، وهي بلا فقد، بلغت ٧٠٢١ كيلوبايت؛ أي نحو سبعة ميغابايت لصورة واحدة. والصورة نفسها بصيغة JPEG بجودة ٩٠ بلغت ١٣٨٨ كيلوبايت، وبجودة ٦٠ بلغت ٥٥٤ كيلوبايت، وبجودة ٣٠ بلغت ٣١٩ كيلوبايت.

وفي صف الأرقام هذا أمران يستحقان النظر. الأول أن القفزة الكبيرة تقع بين بلا فقد وبفقد، لا بين جودة ٩٠ وجودة ٣٠. والثاني أن النزول من ٦٠ إلى ٣٠ لا يقتطع سوى نحو مئتي كيلوبايت، وفي المقابل يُظهر التلف على الحواف. ولهذا نتوقف عمليا في مكان ما بين الستين والثمانين ولا ننزل أدنى من ذلك.

ونقطة نادرا ما تذكرها الشروح: اخفض الجودة مرة واحدة فقط. فكلما فتحت ملفا مضغوطا بفقد وحفظته من جديد، ركب تلف جديد فوق التلف القديم. احتفظ بالنسخة الأصلية بلا فقد في مكان ما وصدّر منها دائما.

صورة واحدة محفوظة بأربع طرق

الصورة نفسها بأبعاد ٢٥٤٤ في ١٩٠٤ بكسل من مكتبة وسائط هذا الموقع، مقيسة في ٢٠٢٦-٠٩-٠٦.

  1. PNG بلا فقد ٧٠٢١ كيلوبايت
  2. JPEG بجودة ٩٠ ١٣٨٨ كيلوبايت
  3. JPEG بجودة ٦٠ ٥٥٤ كيلوبايت
  4. JPEG بجودة ٣٠ ٣١٩ كيلوبايت

هذه الأرقام تصح لهذه الصورة وحدها. وصورة أبسط أو أكثر ازدحاما تعطي صفا مختلفا تماما.

كلمة مرور على ملف مضغوط: أداة وحيلة في آن

يستطيع كل برنامج ضغط تقريبا وضع كلمة مرور على الأرشيف. وهذا أمر مفيد. فإن اضطررت إلى إرسال بضعة ملفات حساسة بالبريد، فالأرشيف المحمي بكلمة مرور أفضل من إرسالها مكشوفة، بشرط أن تصل كلمة المرور بطريق آخر، بمكالمة هاتفية مثلا.

والآن الوجه الآخر للعملة. الميزة نفسها صارت منذ سنوات طريقا لإيصال البرمجيات الخبيثة، والسبب ليس تقنيا كثيرا. فالنظام الذي يفحص مرفقات البريد لا يستطيع رؤية ما داخل أرشيف محمي بكلمة مرور. وتوثيق مايكروسوفت نفسه عن Defender for Office 365 يقول هذا بالضبط: لا يمكن فحص مرفق مشفَّر أو تفجيره بالكامل ما لم تكن كلمة المرور متاحة، كأن تُستخرج من متن الرسالة. ولهذا فسياستهم الموصى بها هي عزل مثل هذه الرسائل.

فمن يرسل البرمجية الخبيثة يكتب كلمة المرور في متن الرسالة. لا يكلفك ذلك شيئا، وهو جدار أمام الفاحص.

والقاعدة التي تلي ذلك بسيطة، والأفضل التزامها بلا استثناء: لا تفتح أرشيفا محميا بكلمة مرور لم تكن تنتظره، حتى لو بدا المرسل مألوفا. فعنوان المرسل يمكن تزويره؛ أما المكالمة الهاتفية فلا.

الضغط الذي لا تراه

معظم الضغط الذي تستفيد منه يوميا ليس بيدك ولا تسمع به أصلا. فكل صفحة تفتحها في متصفح تصل مضغوطة من الخادم تقريبا دائما، والمتصفح يفكها قبل عرضها عليك.

وعلى هذا الموقع يمكن قياس ذلك. عند كتابة هذا الدرس، تحتفظ طبقة التخزين المؤقت في rgb.ir على ٣١١١ صفحة جاهزة على القرص. وهي معا ٤٦٦ ميغابايت من HTML وتشغل ١٠١ ميغابايت على القرص، أي نحو ٢٢ بالمئة. والأطرف أنه لا توجد نسخة غير مضغوطة في ذلك المجلد أصلا؛ فالنسخة المضغوطة وحدها تُخزَّن وهي التي تذهب مباشرة إلى الزائر.

وهذا بالضبط ما يهم في الحديث عن سرعة الموقع: المحتوى نفسه بخمس حركة المرور. وإن كان هذا الجانب يهمك فمسار سرعة الموقع في قسم التعلم نفسه يكمل من هنا، وإن كان لديك موقع بطيء فصفحة تسريع الموقع تُري كيف يُنجز هذا على موقع حقيقي.

المسار السريع مع الذكاء الاصطناعي

قبل أن تضغط مجلدا ثقيلا وتأمل أن يصغر، امنح ثلاثين ثانية لمعرفة أين يقع الوزن فعلا. فغالبا ما تكون حفنة ملفات كبيرة والبقية ضجيج، وغالبا ما تنتمي تلك الحفنة إلى العائلة التي لا يفيدها ZIP. أمر واحد يعطيك القائمة، ونموذج لغوي سريع ورخيص من فئة Flash يحوّل القائمة إلى قرار؛ واختيارنا الحالي مذكور في قسم الذكاء الاصطناعي على هذا الموقع.

  1. اسرد أكبر ملفات المجلد مع أحجامها. والصفوف الثلاثون الأولى هي الحكاية كلها تقريبا.
  2. سلّم القائمة للنموذج واسأل أي الصفوف مضغوط سلفا وأيها سيصغر فعلا بالضغط.
  3. وإن كان الجواب أن الوزن في الصور والفيديو، فاترك الضغط واذهب إلى تلك الملفات نفسها. فضغطها تغليف لا أكثر.

وصفة جاهزة للنسخ

استخراج القائمة من المجلد:

  find . -type f -printf '%s\t%p\n' | sort -rn | head -30

المُوجَّه، مع تلك القائمة:

  هذه أكبر ثلاثين ملفا في مجلد، والعمود الأول الحجم بالبايت.
  لكل صف قل: هل هو مضغوط سلفا أم لا، ولماذا.
  ثم كوّن ثلاث مجموعات:
  ١) ضغط هذه يوفر مساحة فعلا.
  ٢) مضغوطة سلفا؛ والضغط تغليف لا أكثر.
  ٣) الوزن الحقيقي هنا وهذه تحتاج إعادة حفظ بنفسها.
  هدفي {الوجهة: إرسال بالبريد / أرشفة طويلة الأمد / رفع على موقع}.
  لا تخترع أرقاما؛ تكلم من هذه القائمة وحدها.

قبل أن تثق بالناتج: النموذج لا يرى سوى الأسماء والأحجام، لا المحتوى. فملف بامتداد zip قد يكون مليئا بالصور والنموذج لا يدري. وقبل حذف أي أصل، افتح الأرشيف وتأكد من سلامته؛ وإن كان شيء ما مرادا للبقاء، فاحتفظ بنسختين في مكانين مختلفين. فالأرشيف التالف يعلن عن نفسه تماما حين تحتاج إليه.

الذكاء الاصطناعي في هذا العمل

الضغط ليس المكان الذي يصنع فيه النموذج اللغوي المعجزات؛ فالبرامج العادية تؤدي العمل نفسه وهي مجانية. أما ما يجيده النموذج فعلا هنا فهو هذا: قراءة قائمة استخرجتها أنت من المجلد وإخبارك أين يقع الوزن وأي جهد ضائع. وهناك مهمة واحدة لا تسلمها له أبدا، وهي أدناه.

أدوات تساعد فعلا

  • Gemini لتمريرة آلية على قائمة الملفات، بنموذجه السريع الرخيص. تقول صفحة غوغل نفسها إن تطبيق Gemini على الويب يعمل في أكثر من ٢٣٠ دولة وإقليما، وإيران ليست في تلك القائمة.
  • Claude لحين رغبتك في فهم الأمر لا مجرد تشغيله، لأنه يشرح والشرح قابل للرد. وإيران ليست في أي من قائمتي الدول المدعومة لدى أنثروبيك ولا سبيل رسمي للدفع من إيران.
  • 7-Zip ليست أداة ذكاء اصطناعي، وهي هنا عن قصد: عمل هذا الدرس الفعلي يؤديه برنامج مجاني واحد ولا يحتاج أي نموذج. النموذج يقرر والبرنامج يضغط.
  • RGB طبقة الوصول والدفع لإيران، منفصلة عن الأدوات نفسها.

اين ينقلب ضدك

خطر هذا الموضوع يقع في مكان غير متوقع: أدوات «الضغط المجاني» على الإنترنت. تبحث عن العنوان وترفع الملف وتنزّل النسخة الأصغر. لكن ملفك ذهب إلى خادم لا تعرفه، تحت سياسة احتفاظ لم تقرأها. وهذا لا يهم في صورة إجازة؛ أما العقد وقسيمة الراتب وصورة المستندات فالضغط يجري على حاسوبك ببرنامج مجاني ولا سبب البتة لرفعها. والقول نفسه ينطبق على تسليم مستند لروبوت محادثة: هل يذهب المحتوى إلى تدريب النموذج أم لا فذلك يعتمد على الخطة وإعدادات تلك الخدمة، والشركات كتبته، مثلا في صفحة الخصوصية لدى غوغل لتطبيقات Gemini. والخطر الثاني أكثر تقنية: النموذج يخمّن أحجام الملفات وتخمينه خاطئ غالبا. وأي رقم عن مقدار صغر ملفك يجب أن يأتي من تشغيل الضغط فعلا لا من نموذج.

المصادر: Google: Gemini Apps privacy Where you can use the Gemini web app Anthropic supported countries

حدود هذه النصيحة

أرقام هذا الدرس قِيست على هذا الخادم وعلى الملفات المسماة هنا بعينها ولا تنسحب على ملفك. فنص كثير التكرار ينكمش إلى أبعد من الربع، وملف قاعدة بيانات لا ينكمش تقريبا. وثانيا، الضغط ليس بديلا عن النسخ الاحتياطي: فأرشيف ZIP ملف واحد، وإن تلف فقد يأخذ معه كل ما بداخله، بينما المجلد العادي يخسر عادة الملف التالف وحده. ووضع كلمة مرور على أرشيف ليس تشفيرا بمستوى المؤسسات؛ إنه جيد ضد نظرة عابرة لا أكثر.

من عملنا نحن

كل رقم قرأته في هذا الدرس أُخذ على هذا الخادم في ٢٠٢٦-٠٩-٠٦ ويمكن تكراره. فملف تنسيق قالب الموقع حجمه ١٢٩ كيلوبايت ويصير ٣٢ كيلوبايت عبر gzip بأعلى درجاته. وصورة WebP من مكتبة الوسائط، ٥٤٩ كيلوبايت، خرجت من gzip نفسه أكبر بمقدار ١١٥ بايتا لا أصغر؛ وبعد رحلة ذهاب وإياب عبر gzip كانت لذلك الملف بصمة sha256 نفسها تماما، وهذا هو معنى «بلا فقد». لكن الجزء الأطرف هو طبقة التخزين المؤقت الخاصة بالموقع: في تلك اللحظة كان على القرص ٣١١١ ملف صفحة جاهزة، ولا نسخة واحدة غير مضغوطة في ذلك المجلد. فلا تُخزَّن أي صفحة مرتين؛ تُكتب نسخة gzip وحدها وهي ما يرسله خادم الويب مباشرة. وتلك الصفحات وعددها ٣١١١ هي معا ٤٦٦ ميغابايت من HTML وتشغل ١٠١ ميغابايت على القرص، أي ٢١.٧٧ بالمئة.

اسئلة متابعة حقيقية

هل ZIP أفضل من RAR أم 7z؟

الثلاثة كلها بلا فقد والفرق بينها في العمل اليومي ضئيل. ولدى ZIP ميزة أن ويندوز وماك ولينكس تفتحه من دون تثبيت شيء، فهو الخيار الأأمن للإرسال إلى الآخرين. و7z يضغط عادة أكثر قليلا، وفي المقابل يحتاج الطرف الآخر إلى برنامجه.

إن ضغطت ملفا مرتين، هل يصغر أكثر؟

لا، بل يكبر قليلا عادة. فالتمريرة الأولى أزالت التكرار ولم يبق ما يُزال، بينما تضيف كل جولة تغليف بضعة بايتات من الترويسة. وهذا بالضبط ما حدث لصورة WebP في هذا الدرس، إذ زادت ١١٥ بايتا.

ملف zip عندي تالف؛ هل من حل؟

أحيانا نعم. فبعض برامج الضغط فيها خيار إصلاح وتستطيع انتشال الجزء السليم، خاصة في صيغة RAR التي فيها بيانات استرداد اختيارية. لكن الجواب الصادق أن الجزء التالف يضيع في معظم الحالات، وهذا هو السبب الرئيس في أن الأرشيف ليس بديلا عن النسخ الاحتياطي.