ما هي تنسيقات الضغط/الأرشفة التي تدعم الضغط بين الملفات؟

StackOverflow https://stackoverflow.com/questions/266214

  •  06-07-2019
  •  | 
  •  

سؤال

هذا السؤال حول أرشفة ملفات PDF جعلني أتساءل - إذا كنت أرغب في ضغط الكثير من الملفات (لأغراض الأرشفة) والتي تعد في الأساس تغييرات صغيرة تم إجراؤها فوق قالب رئيسي (ترويسة)، فيبدو أنه يمكن تحقيق مكاسب ضغط هائلة من خلال الضغط بين الملفات.

هل يدعم أي من تنسيقات الضغط/الأرشفة القياسية هذا؟AFAIK، تركز جميع التنسيقات الشائعة على ضغط كل ملف على حدة.

هل كانت مفيدة؟

المحلول

وعدة صيغ تفعل ضغط أمور الملف.

وأقدم مثال على ذلك هو .tar.gz. والقطران لا يوجد لديه ضغط ولكن يسلسل كل الملفات معا، مع رؤوس قبل كل ملف، و.gz يمكن ضغط ملف واحد فقط. يتم تطبيقها سواء في تسلسل، وانها الشكل التقليدي في العالم يونكس. .tar.bz2 هو نفسه، فقط مع BZIP2 بدلا من غزيب.

ومزيد من الأمثلة الأخيرة هي الصيغ اختياري ضغط "الصلبة" (على سبيل المثال، RAR والرمز البريدي 7)، والتي يمكن أن سلسلة داخليا كافة الملفات قبل ضغط، إذا مكنت من خيار العلم سطر الأوامر أو واجهة المستخدم الرسومية.

نصائح أخرى

ألقِ نظرة على ملف Google open-vcdiff.

http://code.google.com/p/open-vcdiff/

إنه مصمم لحساب دلتا مضغوطة صغيرة ويطبق RFC 3284.

http://www.ietf.org/rfc/rfc3284.txt

لدى Microsoft واجهة برمجة تطبيقات (API) للقيام بشيء مماثل، دون أي مظهر من مظاهر المعيار.

بشكل عام، الخوارزميات التي تبحث عنها هي تلك المستندة إلى Bentley/McIlroy:

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.11.8470

على وجه الخصوص، ستكون هذه الخوارزميات ناجحة إذا كان حجم القالب أكبر من حجم النافذة (~ 32 كيلو بايت) المستخدمة بواسطة gzip أو حجم الكتلة (100-900 كيلو بايت) المستخدمة بواسطة bzip2.

يتم استخدامها بواسطة Google داخليًا داخل تطبيق BIGTABLE الخاص بهم لتخزين صفحات الويب المضغوطة لنفس السبب الذي تبحث عنه.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top