Каква е ползата от използването на файла Tar файла днес?

Съдържание:

Каква е ползата от използването на файла Tar файла днес?
Каква е ползата от използването на файла Tar файла днес?

Видео: Каква е ползата от използването на файла Tar файла днес?

Видео: Каква е ползата от използването на файла Tar файла днес?
Видео: ✨️How can you set yourself free from a toxic situation✨️ 18+ pick a card tarot, timeless ✨️ - YouTube 2024, Април
Anonim
 Графичният архивиращ формат е в изчислителните години истински металус, но все още е в тежка употреба днес. Какво прави така, че формата на катран да е толкова полезен дълго след създаването му?
Графичният архивиращ формат е в изчислителните години истински металус, но все още е в тежка употреба днес. Какво прави така, че формата на катран да е толкова полезен дълго след създаването му?

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Въпроса

Reader на SuperUser MarcusJ е любопитен за формата на катран и защо продължава да го използва след всички тези години:

I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.

Questions:

  • Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
  • Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
  • Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?

Това е съвсем разумен въпрос; толкова много се е променило в изчислителния свят през последните тридесет години, но все още използваме формата на катран. Каква е историята?

Отговорът

Сътрудникът на SuperUser Allquixotic предлага известно разбиране за дълголетието и функционалността на формата на катран:

Part 1: Performance

Here is a comparison of two separate workflows and what they do.

You have a file on disk

blah.tar.gz

което е, да речем, 1 GB от gzip-компресирани данни, които при некомпресиране заемат 2 GB (така че съотношението на компресия е 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

Това ще

  • ПРОЧЕТЕТЕ съдържанието на 1GB компресирани данни от

    blah.tar.gz

  • Процедирайте компресираните данни през

    gzip

    декомпресор в паметта.

  • Тъй като буферът за паметта се запълва с данни за "блок", ПИСМИ некомпресираните данни във файла

    blah.tar

    на диска и повторете, докато не се прочетат всички компресирани данни.

  • Прекратяване на връзката (изтриване) на файла

    blah.tar.gz

Сега вече имаш

blah.tar

на диска, който е некомпресиран, но съдържа един или повече файлове в него с много ниска структура на данните. Размерът на файла вероятно еняколко байта по-голяма от сумата от всички данни за файла.

Ти бягаш:

tar xvf blah.tar

Това ще

  • ПРОЧЕТЕТЕ 2GB некомпресирано съдържание на данни от

    blah.tar

    и

    tar

    структурата на файловия формат, включително информация за файловите разрешения, имена на файлове, директории и др.

  • ПИСМЕТЕ на диска 2GB данните плюс метаданните. Това включва: преобразуване на информацията за структурата на данните / метаданните в създаването на нови файлове и директории на диск, както и пренаписване на съществуващи файлове и директории с ново съдържание на данни.

Общите данни, които ние ПРОЧЕТИ от диска в този процес е 1GB (за gunzip) + 2GB (за катран) = 3GB.

Общите данни, които ние НАПИСАЛ до диска в този процес е 2GB (за gunzip) + 2GB (за катран) + няколко байта за метаданни = около 4GB.

Път 2

Ти имаш

blah.tar.gz

по един или друг начин.

Решавате да изпълните:

tar xvzf blah.tar.gz

Това ще

  • ПРОЧЕТЕТЕ съдържанието на 1GB компресирани данни от

    blah.tar.gz

    блок в даден момент, в паметта.

  • Процедирайте компресираните данни през

    gzip

    декомпресор в паметта.

  • Тъй като буферът на паметта се запълва, ще го направи тръба тези данни, в паметта, до

    tar

    файлов формат, който ще прочете информацията за метаданните и т.н. и данните за некомпресираните файлове.

  • Тъй като буферът за паметта се запълва в

    tar

    файла parser, той ще записва некомпресираните данни на диск, като създава файлове и директории и ги попълва с некомпресирано съдържание.

Общите данни, които ние ПРОЧЕТИ от диска в този процес е 1 GB компресирани данни, период.

Общите данни, които ние НАПИСАЛ до диска в този процес е 2 GB некомпресирани данни + няколко байта за метаданни = около 2 GB.

Ако забележите, размерът на дисковете I / O в Път 2 еидентичен към дисковия вход / изход, изпълняван от, да речем

Zip

или

7-Zip

програми, коригиране на всякакви разлики в съотношението на компресия.

И ако съотношението на компресия е вашето притеснение, използвайте

Xz

компресор за капсулиране

tar

и имате LZMA2'ed TAR архив, който е също толкова ефективен, колкото и най-модерния алгоритъм, с който разполага

7-Zip

:-)

Част 2: Характеристики

tar

съхранява разрешенията на UNIX в рамките на файловите си метаданни и е много добре познат и тестван за успешно опаковане на директория с различни видове разрешения, символни връзки и т.н. Има повече от няколко случая, в които може да се наложи да събирате множество файлове в един файл или поток, но не непременно да го компресирате (въпреки че компресията е полезна и често се използва).

Част 3: Съвместимост

Много инструменти се разпространяват в изходна или двоична форма като.tar.gz или.tar.bz2, защото това е файлов формат с най-малък общ знаменател: подобно на повечето потребители на Windows има достъп до.zip или.rar декомпресори, повечето Linux инсталации, дори и най-основните, ще имат достъп най-малко на катран и gunzip, без значение колко възрастен или по-ниски. Дори и фърмуерите на Android имат достъп до тези инструменти.

Новите проекти, насочени към аудитории, изпълняващи съвременни дистрибуции, могат много добре да се разпространяват в по-модерен формат, като например.tar.xz (използвайки компресирания формат Xz (LZMA), който компресира по-добре от gzip или bzip2) или.7z, файловите формати Zip или Rar, тъй като компресират и определят оформление за капсулиране на няколко файла в един файл.

Не виждате.7z да се използват по-често поради същата причина, че музиката не се продава от онлайн магазините за изтегляне в съвсем нови формати като Opus или видео в WebM. Съвместимост с хора, управляващи древни или много основни системи.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите.Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.

Препоръчано: