سؤال ما هي ميزة استخدام "القطران" اليوم؟


وأنا أعلم ذلك tar تم إنشاء أرشيفات أرشيف في اليوم ، ولكن اليوم لدينا تنسيقات ملفات أرشيف تقوم بتجميع الملفات وإجراء الضغط داخل نفس تنسيق الملف المنطقي.

الأسئلة:

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

  • هل هناك ميزات لل tar تنسيق الملف الذي تنسيقات الملفات الأخرى ، مثل .7z و .zip لا أملك؟

  • منذ tar هو تنسيق ملف قديم ، وتوجد تنسيقات ملفات أحدث اليوم ، لماذا tar (سواء مغلفة في gzip، bzip2 أو حتى الجديد xzلا تزال تستخدم على نطاق واسع اليوم على جنو / لينكس ، أندرويد ، بي إس دي ، وغيرها من أنظمة التشغيل UNIX ، لنقل الملفات ، مصدر البرامج والتنزيلات الثنائية ، وفي بعض الأحيان حتى كملف مدير حزم؟


206
2018-03-14 14:33


الأصل


أنا أختلف على أنه "يضيع الوقت". إذا كنت تقصد الأداء ، فلا توجد عقوبة أداء فعلية للقطران لأن التنسيق فعال للغاية. إذا كنت تقصد أنها النفايات ك الوقت ، لا أرى كيف tar xvzf اصعب من 7z -x... - Horn OK Please
يبدو أنه يندب حقيقة أن القطران لا يقوم بتخزين كتالوج في البداية ، لذلك أدوات ضغط غوي التي ترغب في إدراج المحتويات قبل استخراجها تضطر إلى فك ضغط القطران بأكمله فقط لإدراج المحتويات ، ثم تقوم بتفكيكها مرة أخرى عند استخراج . - psusi
MarcusJ: تعتقد 7z بطريقة ما بطريقة سحرية يعرف أين يبدأ كل ملف في أرشيف؟ إلى جانب ذلك ، تعمل خوارزميات الضغط المعتادة (gzip، bzip2) مع بث المحتوى: لا حاجة لإكمال 100٪ في المرحلة الأولى قبل التالي. - progo
أيضاMarcusJ يبدو أنك تخلط بين أمرين مختلفين: عندما تفعل tar xvzfالبيانات غير المضغوطة ليس مكتوبة على القرص الصلب في .tar شكل! أنت على حق إذا ركضت gunzip blah.tar.gz وثم tar xf blah.tar، سيكتب البيانات إلى القرص مرتين (مرة واحدة مثل .tar ومرة ​​أخرى كملفات في نظام الملفات) ، ولكن لا أحد يفعل ذلك بالفعل بهذه الطريقة. ال tar xzf يستخدم UNIX Pipe (اساسا نسخة ذاكرة) لنقل البيانات غير المضغوطة من gzip (أو أيا كان الضاغط) ل tar، لذلك فإن البيانات ليس مكتوبة على القرص في .tar شكل. - Horn OK Please
شيء واحد وأنا أعلم هو ذلك tar (مضغوط بشكل خاص) يتصرف بفظاعة عندما يتعلق الأمر بفساد البيانات. بيانات التكرار / الاستعادة الصغيرة التي تضيفها الأشكال الحديثة هي قيمة ذهبية - PPC


الأجوبة:


الجزء 1: الأداء

في ما يلي مقارنة بين عمليتين منفصلتين للعمل وماذا يفعلان.

لديك ملف على القرص blah.tar.gz وهو ، على سبيل المثال ، 1 غيغابايت من البيانات المضغوطة gzip والتي ، عند فك ضغطها ، تشغل 2 غيغابايت (لذا فإن نسبة الضغط 50٪).

الطريقة التي ستقوم بإنشاء هذا ، إذا كنت تريد إجراء الأرشفة والضغط بشكل منفصل ، ستكون:

tar cf blah.tar files ...

وهذا من شأنه أن يؤدي إلى blah.tar وهو مجرد تجميع لل files ... في شكل غير مضغوط.

ثم ستفعل

gzip blah.tar

هذا من شأنه قراءة محتويات blah.tar من القرص ، اضغط عليها من خلال خوارزمية ضغط gzip ، اكتب المحتويات blah.tar.gz، ثم إلغاء ربط (حذف) الملف blah.tar.

الآن ، دعونا فك الضغط!

الطريق 1

عندك blah.tar.gz، بشكل او بأخر.

أنت تقرر تشغيل:

gunzip blah.tar.gz

هذا سوف

  • قم بقراءة محتويات البيانات المضغوطة البالغ ١ غيغابايت blah.tar.gz.
  • معالجة البيانات المضغوطة من خلال gzip decompressor في الذاكرة.
  • أثناء تعبئة ذاكرة التخزين المؤقت مع قيمة "كتلة" البيانات ، WRITE البيانات غير مضغوط في الملف blah.tar على القرص وتكرار حتى تتم قراءة كافة البيانات المضغوطة.
  • إلغاء ارتباط (حذف) الملف blah.tar.gz.

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

أنت تركض:

tar xvf blah.tar

هذا سوف

  • قراءة 2 غيغابايت من محتويات البيانات غير المضغوطة من blah.tar و ال tar هياكل بيانات تنسيق الملف ، بما في ذلك معلومات حول أذونات الملفات ، وأسماء الملفات ، والأدلة ، وما إلى ذلك.
  • قم بكتابة 2 غيغابايت من البيانات بالإضافة إلى البيانات الوصفية على القرص. يتضمن ذلك: ترجمة بنية البيانات / بيانات التعريف إلى إنشاء ملفات جديدة والأدلة على القرص حسب الحاجة ، أو إعادة كتابة الملفات والدلائل الموجودة مع محتويات البيانات الجديدة.

مجموع البيانات نحن اقرأ من القرص في هذه العملية كان 1 GB (ل gunzip) + 2 GB (للقطران) = 3 GB.

مجموع البيانات نحن WROTE إلى القرص في هذه العملية كان 2 GB (ل gunzip) + 2 GB (للقطران) + بضعة بايت لبيانات التعريف = حوالي 4 GB.

الطريق 2

عندك blah.tar.gz، بشكل او بأخر.

أنت تقرر تشغيل:

tar xvzf blah.tar.gz

هذا سوف

  • قم بقراءة محتويات البيانات المضغوطة البالغ ١ غيغابايت blah.tar.gz، كتلة في وقت واحد ، إلى الذاكرة.
  • معالجة البيانات المضغوطة من خلال gzip decompressor في الذاكرة.
  • كما تملأ الذاكرة المؤقتة المخزن ، وسوف يضخ تلك البيانات ، في الذاكرة ، من خلال إلى tar محلل تنسيق الملف ، الذي سيقرأ المعلومات حول البيانات الوصفية ، وما إلى ذلك ، وبيانات الملفات غير المضغوطة.
  • كما يملأ المخزن المؤقت للذاكرة في tar محلل الملف ، فإنه سيتم كتابة البيانات غير المضغوطة إلى القرص ، عن طريق إنشاء الملفات والدلائل وملئها بالمحتويات غير المضغوطة.

مجموع البيانات نحن اقرأ من القرص في هذه العملية كان 1 غيغابايت من البيانات المضغوطة ، الفترة.

مجموع البيانات نحن WROTE إلى القرص في هذه العملية كان 2 غيغابايت من البيانات غير مضغوطة + بايت قليلة لبيانات التعريف = حوالي 2 GB.

إذا لاحظت ، مقدار القرص I / O في الطريق 2 هو مطابق إلى القرص I / O يؤديها ، قل ، و Zip أو 7 زيب البرامج ، وضبط أي اختلافات في نسبة الضغط.

وإذا كانت نسبة الضغط هي مصدر قلقك ، فاستخدم Xz ضاغط للتغليف tar، وكان لديك LZMA2'ed أرشيف TAR ، وهو بنفس كفاءة الخوارزمية الأكثر تقدمًا المتوفرة لـ 7-Zip :-)

الجزء 2: الميزات

tar يخزن Unix أذونات ضمن بياناته الوصفية للملف ، ومعروف جيداً ومُختبر جيداً للتعبئة بنجاح لدليل مع جميع أنواع الأذونات المختلفة والروابط الرمزية وما إلى ذلك. هناك أكثر من حالات قليلة قد يحتاج فيها المرء إلى حفنة من الملفات في ملف واحد أو دفق واحد ، ولكن ليس بالضرورة ضغطها (على الرغم من أن الضغط مفيد وغالبًا ما يُستخدم).

الجزء 3: التوافق

يتم توزيع العديد من الأدوات في شكل مصدر أو ثنائي مثل .tar.gz أو .tar.bz2 ، لأنه تنسيق ملف "أدنى مشترك مشترك": يشبه إلى حد كبير معظم مستخدمي Windows لديهم حق الوصول إلى .zip أو .rar decompressors ، معظم عمليات تثبيت Linux ، حتى أبسط ، سيكون الوصول إلى ما لا يقل عن القطران والبندقية ، بغض النظر عن العمر أو قلص. حتى البرامج الثابتة الروبوت الوصول إلى هذه الأدوات.

يمكن للمشاريع الجديدة التي تستهدف الجماهير التي تقوم بتشغيل التوزيعات الحديثة أن توزع بشكل جيد في شكل أكثر حداثة ، مثل .tar.xz (باستخدام تنسيق ضغط Xz (LZMA) ، الذي يضغط بشكل أفضل من gzip أو bzip2 ، أو .7z ، وهو مشابه الرمز البريدي أو RAR تنسيقات الملفات في ذلك كل من يضغط ويحدد تخطيط لتغليف ملفات متعددة في ملف واحد.

أنت لا ترى .7z تستخدم في كثير من الأحيان لنفس السبب الذي لا يتم بيع الموسيقى من مخازن التنزيل عبر الإنترنت بتنسيقات جديدة تمامًا مثل التأليفأو فيديو في ويب إم. التوافق مع الأشخاص الذين يديرون أنظمة قديمة أو أساسية جدًا.


175
2018-03-14 17:09



تعليقات المديح للحصول على إجابة رائعة مع فصل كل المحتوى تحت ثلاثة رؤوس مميزة. - JFW
يبدو أن "الجزء الثالث: التوافق" قد تم نسخه من إجابة @ Kruug. - titaniumdecoy
titaniumdecoy هل لاحظت أنه كان allquixotic الذي كتب في الأصل ذلك الجزء وتحريره إلى إجابة Kruug؟ - slhck
شكرا لتوضيح ذلك ، لم أتبين. ومع ذلك يبدو لي سخيفة بعض الشيء بالنسبة لي أن يكون هناك كتلة متماثلة من النص في جوابين مختلفين على هذه الصفحة. - titaniumdecoy
هذا يجيب عن السبب tar يناسب النظام البيئي للأرشفة (أي تجميع الملفات معًا وتوفير دعم للأداء وبعض المزايا الأخرى مثل توفير الأذونات) ، ولكنه لا يعالج أسباب البدائل الحديثة مثل dar لا تستخدم في المكان. وبعبارة أخرى ، فإن هذه الإجابة تبرر استخدام تجميعات الملفات ، ولكن ليس من tar البرنامج في حد ذاته. - gaborous


هذه تم الرد على Stack Overflow.

bzip و gzip يعملان على ملفات مفردة ، وليس مجموعات من الملفات. يعمل الرمز البريدي العادي العادي (و pkzip) على مجموعات من الملفات ولديهم مفهوم الأرشيف المدمج.

إن فلسفة nix هي واحدة من الأدوات الصغيرة التي تؤدي وظائف محددة بشكل جيد للغاية ويمكن ربطها ببعضها البعض. هذا هو السبب في وجود أداتين هنا لهما مهام محددة ، وهي مصممة بحيث تتلاءم بشكل جيد. وهذا يعني أيضًا أنه يمكنك استخدام tar في تجميع الملفات ومن ثم يمكنك اختيار أداة الضغط (bzip ، gzip ، وما إلى ذلك).

يتم توزيع العديد من الأدوات في شكل مصدر أو ثنائي مثل .tar.gz أو .tar.bz2 ، لأنه تنسيق ملف "أدنى مشترك مشترك": يشبه إلى حد كبير معظم مستخدمي Windows لديهم حق الوصول إلى .zip أو .rar decompressors ، معظم عمليات تثبيت Linux ، حتى أبسط ، سوف يكون الوصول إلى على الأقل tar و gunzip، بغض النظر عن العمر أو قلصت. حتى البرامج الثابتة الروبوت الوصول إلى هذه الأدوات.

قد توزع المشاريع الجديدة التي تستهدف الجماهير التي تقوم بتشغيل التوزيعات الحديثة بشكل جيد في شكل أكثر حداثة ، مثل .tar.xz (باستخدام Xz (LZMA) تنسيق الضغط ، الذي يضغط بشكل أفضل من gzip أو bzip2) ، أو .7z ، والذي يشبه ZIP أو RAR تنسيقات الملفات في ذلك كل من يضغط ويحدد تخطيط لتغليف ملفات متعددة في ملف واحد.

أنت لا ترى .7z تستخدم في كثير من الأحيان لنفس السبب الذي لا يتم بيع الموسيقى من مخازن التنزيل عبر الإنترنت بتنسيقات جديدة تمامًا مثل التأليفأو فيديو في ويب إم. يعد التوافق مع الأشخاص الذين يديرون أنظمة قديمة أو أساسية للغاية أمرًا مهمًا.


101
2017-08-19 08:50



مرحبًاKruug ، حررت رسالتك فقط لإعطاء منظور عملي حول سبب استمرار وجود الأشخاص أختر لاستخدام هذه التنسيقات عندما يكون لديهم خيار استخدام شيء آخر. لم أغير النص الذي لديك بالفعل. هذا فقط للتأكد من أن ما يبدو أنه الجواب القانوني لهذا السؤال سيكون له الصورة الكاملة. لا تتردد في تحرير تعديلي إذا كنت تريد :) - Horn OK Please
allquixotic التأسيس أي شخص؟ تحرير تحرير وتعديل حتى تتمكن من تحرير تحرير ... - SnakeDoc
هذه الإجابة هي بالتأكيد حالة من "أنا في مهب في بعض الأحيان من قبل upvotes غير مستحق". لا يعالج المسألة الأساسية للسؤال الذي هو مع سرد محتويات القطران المضغوط وليس حتى الجواب الأصلي! - Ярослав Рахматуллин
-1 من أجل العدالة العظيمة. كان يجب أن يكون هذا تعليقًا. - wim
لا أشتري حجة القاسم المشترك / الأدنى. أتذكر على أنظمة جديدة (الشمس) في كثير من الأحيان الحاجة إلى تحميل gzip / gunzip (من sunfreeware) فقط لتثبيت البرامج الأخرى tar.gz حزم (بالإضافة إلى القطران gnu ، منذ امتص القطران الشمس). بالنسبة للمقام القديم / الأدنى المشترك ، كان لديك tar.Z (ضغط / إلغاء ضغط). كان تطور المرافق تيارًا ثابتًا (لا يقصد التورية) من التغيير والتحسين: Z => zip => gz => bz2 => 7z => xz (أو أي ترتيب تفضله). أما بالنسبة لدور القطران ، فإن بعض الأدوات unw / unpress فقط ، ولا تزال تتطلب tar لتجميع التسلسلات الهرمية للملفات. - michael


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

  • هل تريد البيانات المستخرجة للحفاظ على أوقات وصول الملف؟ القطران يمكن أن تفعل ذلك. للحفاظ على الأذونات؟ القطران يمكن أن تفعل ذلك.

  • هل تريد الحفاظ على الروابط الرمزية كروابط رمزية؟ القط يفعل ذلك بشكل افتراضي. تريد نسخ الهدف بدلا من ذلك؟ القطران يمكن أن تفعل ذلك.

  • هل تريد أن تتأكد من تخزين البيانات المرتبطة بالبيانات فقط مرة واحدة (أي ، للقيام بالشيء الصحيح)؟ القط يفعل ذلك.

  • هل تريد التعامل مع الملفات المتفرقة بشكل جيد؟ القطران يمكن أن تفعل ذلك.

  • هل تريد بيانات غير مضغوطة (لماذا؟)؟ القطران يمكن أن تفعل ذلك. لضغط مع gzip؟ القطران يمكن أن تفعل ذلك. مع bzip2؟ القطران يمكن أن تفعل ذلك. مع برامج ضغط خارجي تعسفي؟ القطران يمكن أن تفعل ذلك.

  • هل تريد الكتابة أو الاسترداد من / إلى جهاز خام؟ شكل القطران يعالج ذلك الغرامة.

  • هل تريد إضافة ملفات إلى أرشيف موجود؟ القطران يمكن أن تفعل ذلك. للفروق أرشيفين لمعرفة ما الذي تغير؟ القطران يمكن أن تفعل ذلك. لتحديث فقط تلك الأجزاء من الأرشيف التي تغيرت؟ القطران يمكن أن تفعل ذلك.

  • هل تريد التأكد من عدم أرشفته عبر أكثر من نظام ملفات واحد؟ القطران يمكن أن تفعل ذلك.

  • هل تريد الحصول على الملفات الأحدث من النسخة الاحتياطية الأخيرة؟ القطران يمكن أن تفعل ذلك.

  • هل تريد الاحتفاظ بأسماء وأرقام المستخدمين والمجموعات؟ القطران يمكن أن تفعل أي واحد.

  • هل تحتاج إلى الحفاظ على عقد الجهاز (مثل الملفات في /dev) بحيث بعد استخراج ، سيتم تشغيل النظام بشكل صحيح؟ القطران يمكن أن تفعل ذلك.

وقد تطورت القطران للتعامل مع الكثير والكثير من حالات الاستخدام لعقود ، ويعرف حقا كثير حول الأشياء التي يريد الناس القيام بها مع نظام ملفات Unix.


61



أنت لا تحتاج إلى tar GNU لاستخدام ضاغط إجباري: فقط أخبر tar أن يكتب الأرشيف إلى stdout به f - وتوجيهها إلى الضاغط. - Ilmari Karonen
"هل تريد بيانات غير مضغوطة (لماذا؟)؟" أنا أستعمل tar في كثير من الأحيان لنسخ شجرة نظام ملفات من مكان إلى آخر والحفاظ على الأذونات ، وما إلى ذلك ، والضغط في هذه الحالة يأخذ فقط دورات CPU إضافية. مثلا tar cf - * | tar xf - -C /somewhere. - Steve
بالإضافة إلى ذلك ، قد تحتاج إلى ملف .tar عندما يقوم نظام الملفات الوجهة بإزالة الازدواجية. سيؤدي إنشاء أرشيفات مضغوطة في نظام ملفات يعمل على إزالة التكرار إلى خفض نسبة dedupe. مثال: حذفنا مرة واحدة ملف tar.gz $ 10،000.00 ؛ بمعنى أنها تستهلك مساحة تخزين بقيمة 10 آلاف دولار بسبب استخدام أحد الأشخاص للضغط. - Aaron
قد تكون دورات CPUSteve أرخص من IO القرص لخوارزميات مثل LZ4 أو LZO. هذا هو السبب في أنها تستخدم في zram ، وأنظمة الملفات ضغط شفافة مثل NTFS ، ZFS ، Btrfs ... لذلك في بعض الأحيان هو في الواقع أسرع من ضغط منذ يتم تقليل كمية القرص IO إلى حد كبير - phuclv


أنت تخلط بين العمليتين المتميزتين أرشفة و ضغط.

أسباب استخدام أرشيفي

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

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

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

أسباب استخدام أرشيفي بضغط gzip

سبب واحد أنني استخدم tar مع gzip هو: سرعة! إذا كنت ترغب في نقل عدد قليل من ملفات النص من مكان إلى آخر ، أنا لا تهتم بالضغط على البايتات الأخيرة ، لأن الضغط يكون فقط تستخدم للعبور ، وليس للتخزين على المدى الطويل. في تلك الحالات التي أستخدمها gzip، التي لا تفوق وحدة المعالجة المركزية (على النقيض من 7 زيبعلى سبيل المثال) ، والتي يعني أنني I / O ملزمة مرة أخرى وليس وحدة المعالجة المركزية ملزمة. ومره اخرى: gzip يمكن ان يكون تعتبر متاحة في كل مكان.

أسباب استخدام tar لصالح scp، rsyncوما إلى ذلك

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


28



ولكن إذا كنت ستقوم بالأرشفة ، فلماذا لا يتم ضغطها أيضًا؟ حسنًا ، نعم ، يمكن توفير الوقت للملفات التي لا يتم ضغطها بسهولة ، ولكن من المرجح أن يعرف أصحاب الأرشيف على سبيل المثال أن الموسيقى على سبيل المثال ليست قابلة للضغط ، باستثناء الرؤوس. - MarcusJ
قد لا تحتاج إلى ذلك ، أو قد لا يكون المحتوى الخاص بك مضغوطًا. - Hasturkun
لأسباب تتعلق بالأداء ، يكون من الأسهل في كثير من الأحيان استخدام تجميع الملفات غير المضغوطة عند إرسال البيانات عبر ارتباطات شبكة عرض نطاق ترددي عالية جدًا تتجاوز السرعة التي يمكن للضاغط من خلالها ضغط البيانات. يمكن تحقيق ذلك على سبيل المثال باستخدام Gigabit Ethernet ؛ فقط عدد قليل من خوارزميات الضغط المصممة جيدًا ، والتي تحتوي أيضًا على نسبة ضغط منخفضة جدًا ، يمكنها ضغط البيانات بسرعة حتى على وحدة المعالجة المركزية الكبيرة على سطح المكتب. على جهاز مضمن لديك وقت أقل للعمل مع وحدة المعالجة المركزية. - Horn OK Please
ليس هذا فقط هو تسريع الأشياء ولكنه يسمح أيضًا بالحفاظ على ملكية الملفات والطوابع الزمنية والسمات (إذا كانت امتيازات المستخدم تسمح بذلك) - Andre Holzner
AndreHolzner الحق. أنا أفعل في كثير من الأحيان tar cf - . | (cd ~/somewhere; tar xvf -). من المفيد حقًا عدم الانتظار حتى يتم كتابة المؤشر المركزي (على سبيل المثال في ملف مضغوط). - user239558


إضافة إلى إجابات جيدة أخرى هنا ، أنا أفضل الجمع tar + gzip|bzip2|xz بشكل أساسي لأن هذه الملفات المضغوطة تشبه التدفقات ، ويمكنك توجيهها بسهولة.

أحتاج إلى فك ضغط الملف المتوفر في الإنترنت. مع سواء zip أو rar تنسيقات لدي لتنزيله أولاً ثم إلغاء ضغطه. مع tar.{gz,bz2,xz} يمكنني تنزيل وإلغاء ضغط في نفس الخطوة ، دون الحاجة إلى وجود أرشيف مضغوط بشكل فعلي على القرص:

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

هذا سيترك فقط الملفات غير المضغوطة في القرص الخاص بي ، وسيسرّع العملية بأكملها ، لأنني لا أضيع وقت التحميل الأول للملف بأكمله وبعد انتهاء التنزيل ، أغلقه. بدلاً من ذلك ، أقوم بإلغاء ضغطه أثناء تنزيله. لا يمكنك القيام بذلك مع zip أو rar الملفات.


24



أنا لا أعرف عن rar (إنه برنامج رهيب يبدو أنه أصبح شائعًا فقط مع القراصنة بسبب قدرتهم على الانقسام إلى ملفات أصغر متعددة) ، ولكن يمكنك سحب الرمز بسهولة. الصفحة رجل حتى يذكر ذلك. كما يتميز أيضًا بكونه قادرًا على استخراج الملفات أو تحديثها من منتصف الأرشيف الكبير بكفاءة ، على الرغم من أن القطران يميل إلى الحصول على ضغط أفضل قليلاً. ضغط مقابل الوصول العشوائي هو المقايضة. - psusi
psusi غير صحيحة. يمكنك أن تفعل الخارقة مثل هذهولكن ما يفعله هو تنزيل الملف بأكمله في الذاكرة وفك ضغطه بدلاً من فك ضغطه أثناء التنزيل. و funzip فقط يستخرج الملف الأول في zipfile ، وليس كل شيء. - Carlos Campderrós
@ ستو فقط لتوضيح ، ليست قضية ، هو مجرد تحسين وقتك (لا يهمني الفضاء إذا كان هذا ما كنت تعتقد) - Carlos Campderrós
يعمل كلا الجانبين: يمكنك استخدام tar على جانب واحد و untar في الآخر ، أيضا: tar zc /some/folder | ssh user@host "cd /other/folder && tar zx" - Carlos Campderrós
psusi كما أتذكر من الأوقات القديمة عند استخدام pkzip لتخزين الملفات على الأقراص المرنة متعددة ، كتالوج مخزن الرمز البريدي في نهاية الأرشيف. يطلب دومًا آخر قرص مرن لبدء كتالوج العرض أو الاستخراج. وبالتالي en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg - Mikhail Moskalev


هناك عدة أسباب للالتزام بـ (GNU) Tar.

أنه:

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

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


13



انها البرمجيات الحرة - لذلك الكثير منهم من الجيد في ما يفعل - بصعوبة مقارنة مع الأشياء الأخرى انها موثقة جيدا ولها العديد من الميزات - لا تكاد تستخدم ميزات وبسهولة الاستخدام. وهو يدعم العديد من خوارزميات الضغط - ليس بالبعض الآخر - Griffin
خلقه آلهة يونكس - لذلك يجب علينا استخدامه! - SnakeDoc
يخزن القطران أيضًا أذونات UNIX natively ، وهو معروف جدًا ويتم اختباره. هناك أكثر من حالات قليلة قد يحتاج فيها المرء إلى عرض مجموعة من الملفات في ملف واحد أو دفق واحد ، ولكن ليس بالضرورة ضغطها. - LawrenceC
لحسن الحظ القطران لا يقتصر على إصدارات جنو فقط. رغم أن قنينة جنو هي بالتأكيد جزء جيد من البرمجيات ، إلا أن الواجهة الأمامية لـ libarchive + ذات الصلة هي أسرع وأسهل في مشاريع البرمجيات الأخرى. يمكنك تقديم حجة عن القطران دون تحويله إلى معركة ترخيص. - Lucas Holt
أنا لست ساخرة. أنا أحب RMS والطريقة التي ينفذ بها تصديقه. - Ярослав Рахматуллин


تنسيقات الملفات مثل .zip تطلب البرنامج لقراءة نهاية الملف أولاً ، لقراءة كتالوج أسماء الملفات. على العكس ، يخزن tar تلك المعلومات في الدفق المضغوط.

ميزة طريقة القطران هي أنه يمكنك إلغاء ضغط البيانات أثناء قراءتها من أنبوب غير قابل للبحث ، مثل مقبس شبكة الاتصال.

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

كلاهما لهما استخدامات ، اعتمادًا على ما تفعله.


11



لا ، يمكنك قراءة وكتابة ملفات zip كتيار من وإلى أنبوب. - Mark Adler
قد يكون ذلك مخصصًا للتنفيذ ، ومن المؤكد أنه لا يدعمه pkzip الأصلي. - xorsyst
نعم ، يجب كتابة البرنامج لدعمه. يدعم تنسيق zip بشكل كامل ، مع واصفات البيانات التي يمكن أن تتبع البيانات المضغوطة مع أطوال و CRC. - Mark Adler
MarkAdler ، ما هي البرامج؟ لا يدعم Infozip فك الضغط من أنبوب. - psusi
zlib.net/sunzip033.c.gz - Mark Adler


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

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

لا. في الواقع ، بما أن tar و gzip هما عمليتان ، فستحصل حتى على سُدادة من ميزة السرعة متعددة النواة التي لا يوفرها أرشيفي مثل الرمز البريدي لـ Info-ZIP. من حيث نسبة الضغط ، فإن tar + gzip عادة ما تكون أفضل بشكل ملحوظ من الرمز البريدي مع deflate حيث يمكن أن تستفيد الأولى من الارتباط بين الملفات ، في حين أن الأخير يضغط الملفات بشكل منفصل. يترجم فائدة الضغط هذه إلى فائدة سريعة عند الاستخراج ، نظرًا لأن ضغط أرشيف أكثر انضغاطًا في وقت أقل.

هل هناك ميزات تنسيق ملف tar التي تنسيقات الملفات الأخرى ،   مثل .7z و. الرمز البريدي لم يكن لديك؟

نعم ، تم تصميم القطران لـ Unix ، وتطورت على مر السنين لتكون قادرة على تسجيل واستعادة كل زاوية صغيرة وركنية من أنظمة ملفات Unix ، حتى نظام الملفات Mac OS X Unix الأقدم والأطول عمقًا. يستطيع zip الاحتفاظ بالكثير من البيانات الوصفية مثل الأذونات ، والأوقات ، والمالكين ، والمجموعات ، والروابط الرمزية ، ولكن ليس كل شيء. على سبيل المثال ، لا يمكن لأي من zip أو 7z التعرف على الملفات المتفرقة أو الاستفادة منها ، كما أنها لا تدرك أو لا تستطيع استعادة الروابط الثابتة.

نظرًا لأن tar عبارة عن تنسيق ملف قديم ، توجد تنسيقات ملفات أحدث   اليوم ، لماذا القطران (سواء مغلفة في gzip ، bzip2 أو حتى الجديد   xz) لا تزال تستخدم على نطاق واسع اليوم على جنو / لينكس ، أندرويد ، بي إس دي ، وغيرها   مثل أنظمة التشغيل UNIX ، لنقل الملفات ، مصدر البرنامج و   التنزيلات الثنائية ، وأحيانا حتى شكل مدير حزمة؟

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

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


11



CW تمثل مجتمع ويكي. أنظر أيضا ما هي مشاركات "مجتمع ويكي"؟. - ctype.h
أعتقد أنه CW لأن السؤال يحتوي على أكثر من 15 إجابة. عندما نشرت هذا الجواب ، لأنه الخامس عشر ، تم وضع علامة على السؤال وكل الإجابات CW. - ctype.h
أخفق في رؤية كيف تقول هذه الإجابة شيئًا لا تفعله أي من الإجابات الأخرى ، بخلاف نقل الأسئلة مباشرة (التي كتبت عنها ، راجع للشغل ، لأن المراجعة الأصلية للسؤال كانت رهيبة بما يكفي لإغلاقها كـ NARQ). محاولة لطيفة على الرغم من. - Horn OK Please
انا بخير. مهما كنت ترغب في التفكير على ما يرام. يبدو أن إجابتك أو أي إجابة أخرى تتناول ما إذا كانت هناك عقوبة أداء. إجابتك لا تعالج اختلاف الضغط الملحوظ ، على الرغم من أن الآخرين يفعلون ذلك. نظرًا لأن تعاملك لا يعالج فعليًا الأداء (لا يتعلق قسم الأداء فعليًا بسير العمل ، ولا شيء يتعلق بالأداء) ، فلا توجد إجابات أخرى ترد على كل شيء في مكان واحد. من المثير للاهتمام أنك كتبت سؤال عقوبة الأداء ، ولكنك لم تجب عليه! إذهب واستنتج. - Mark Adler
بالمناسبة ، مناقشة سير العمل الخاص بك هو حول شيء لا أحد على الإطلاق ، وهو كتابة ملف القطران إلى قرص ثم ضغطه. القطران يستخدم دائما إما استدعاء برنامج الضغط مباشرة ، أو مباشرة في أنبوب إلى برنامج ضغط. - Mark Adler