Кіріспе
Компьютерлік файл форматы, бірнеше файлды "tarball" деп аталатын жалғыз файлға біріктіре алады. Компьютерлік технологияда, tar – көптеген файлдарды бір архивке біріктіруге арналған компьютерлік бағдарламалық құрал. Атауы "таспалық архивтен" шыққан, себебі ол бастапқыда магниттік таспаларды қолданатын құрылғылар сияқты өздерінің жеке файлдық жүйесі жоқ тізбектік кіріс-шығыс құрылғыларына дерек жазу үшін жасалған. Tar құрастырған архивтік деректер жиынтығында файлдың атауы, уақыт белгілері, иеленушісі, файлға қол жеткізу рұқсаттары және каталогтардың құрылымы сияқты файлдық жүйенің әртүрлі параметрлері сақталады. POSIX pax пайдасына tar-дан бас тартты, бірақ tar әлі де кеңінен қолданылуда.
In computing, tar is a computer software utility for collecting many files into one archive file, often referred to as a tarball, for distribution or backup purposes. The name is derived from "tape archive", as it was originally developed to write data to sequential I/O devices with no file system of their own, such as devices that use magnetic tape. The archive data sets created by tar contain various file system parameters, such as name, timestamps, ownership, file access permissions, and directory organization. POSIX abandoned tar in favor of pax, yet tar sees continued widespread use.
Тарих
Командалық жолдың құралы алғаш рет 1979 жылдың қаңтарында 7-ші Unix нұсқасында пайда болды, бұл tp бағдарламасын ығыстырды (ол өз кезегінде "tap" бағдарламасын ығыстырған). Осы ақпаратты сақтау үшін файлдық құрылым POSIX.1 1988 және кейін POSIX.1 2001 стандарттарында белгіленді және қазіргі заманғы файлдық архивтеу жүйелерінің көпшілігі қолдайтын форматқа айналды. Tar командасы POSIX.1 2001 стандартында ustar файлдық форматын қолдайтын pax командасының пайдасына тоқтатылды; tar командасы кем дегенде 1994 жылдан бері pax командасының пайдасына алынып тастауға ұсынылды. Бүгінде Unix-ке ұқсас операциялық жүйелерде tar файлдарын қолдауға арналған құралдар, сондай-ақ оларды сығу үшін жиі қолданылатын xz, gzip және bzip2 сияқты қосымша құралдар бар. Бұл команда IBM i операциялық жүйесіне де көшірілді. BSD tar 2018 жылғы сәуір айындағы Windows 10 жаңартуынан бастап Microsoft Windows құрамына енгізілді, сонымен қатар Windows жүйесінде осы форматтарды оқу және жазу үшін көптеген үшінші тарап құралдары қол жетімді.
Негізгі себептері
Тарихи таспалы дисктердің көпшілігі өзгермелі ұзындықтағы дерек блоктарын оқиды және жазады, таспаның арасындағы блоктарда маңызды бос орын қалдырады (таспаның физикалық түрде қозғалуын бастау және тоқтату үшін). Кейбір таспа дисктер (және шикі дискілер) тек белгілі бір ұзындықтағы дерек блоктарын ғана қолдайды. Сонымен қатар, файлдық жүйе немесе желі сияқты кез келген ортаға дерек жазғанда, бір үлкен блокты жазу көптеген кішкентай блоктарға қарағанда аз уақыт алады. Сондықтан, tar командасы деректерді 512 Б блоктарынан тұратын жазбалар түрінде жазады. Пайдаланушы блоктау коэффициентін, яғни бір жазбадағы блоктар санын белгілей алады. Стандартты мәні – 20, нәтижесінде 10 КиБ жазбалар жасалады.
Файл пішімі
Тарихи және қазіргі көптеген tar файл форматтары бар. POSIX стандартында екі tar форматы ресми түрде анықталған: ustar және pax. Ресми түрде анықталмаған, бірақ қазір де қолданылып жүргені – GNU tar форматы. Tar архиві файлдық объектілердің тізбегінен тұрады, сондықтан «тарабол» деген танымал термин осы архиваның әртүрлі объектілерді өз бетінше жинап, бетіне жабысуын бейнелейді. Әрбір файлдық объекті файл деректерін қамтиды және оған 512 байттық тақырыптық жазба (header) тұрады. Файл деректері өзгеріссіз жазылады, бірақ ұзындығы 512 байттың есесіне дейін жуықталдырылады. Алғашқы tar нұсқасы толтыру байттарының мазмұнына көңіл бөлмеді және буфердегі деректерді өзгеріссіз қалдырды, бірақ қазіргі заманғы tar нұсқалары қосымша орынды нөлдермен толтырады. Архивтің соңы кем дегенде екі бір-бірінен кейін келетін нөлдік жазбалармен белгіленеді. (Tar жазбасының мөлшері Version 7 Unix файлдық жүйесінде қолданылған 512 байттық дискілік секторлардан бастау алған болуы мүмкін.) Архивтің соңғы блогы толық ұзындығына дейін нөлдермен толтырылады.
Бағдарламалық жасақтаманы тарату
Тар форматы ашық кодты бағдарламалық қамтамасты тарату үшін жиі қолданыла береді. *NIX дистрибутивтері оны әртүрлі бастапқы код және екілік пакеттерді тарату механизмдерінде пайдаланады, көбінесе бағдарламалық қамтамастың бастапқы коды қысылған тар архивтері түрінде ұсынылады.
Шектеулер
Бастапқы tar форматы Unix-тің алғашқы жылдары жасалған, және қазіргі кезде кеңінен қолданылуына қарамастан, оның көптеген дизайнының ерекшеліктері ескірген деп есептеледі. Көптеген ескі tar нұсқалары кеңейтілген атрибуттарды (xattrs) немесе кіруді бақылау тізімдерін (ACLs) сақтап немесе қалпына келтірмейді. 2001 жылы Star POSIX.1 2001 pax үшін өз тегтерін пайдаланып ACL-дерді және кеңейтілген атрибуттарды қолдауды енгізді. bsdtar ACL-дерді қолдау үшін Star кеңейтімдерін пайдаланады. GNU tar-дың соңғы нұсқалары Linux кеңейтілген атрибуттарын қолдайды, Star кеңейтімдерін қайта іске асырады. BSD tar, tar(5) нұсқаулығындағы файл түрі бөлімінде бірнеше кеңейтімдер қарастырылған. Егер пайдаланушыда тек өте ескі tar болса, онда қауіпсіздік шаралары жоқ болса, бұл мәселелерді алдымен `tar tf archive` командасын қолданып tar файлының мазмұнын қарап шығу арқылы азайтуға болады. Бұл команда архивтің мазмұнын тізімдейді және кейіннен проблемалық файлдарды жоюға мүмкіндік береді. Бұл командалар файлдарды шығармайды, бірақ архивтегі барлық файлдардың аттарын көрсетеді. Егер проблемалық файлдар болса, пайдаланушы жаңа бос каталогты жасап, архивті сонда шығара алады немесе tar файлынан толығымен бас тарта алады. Көптеген графикалық интерфейсті құралдар архивтің мазмұнын шығару алдында көрсетуге мүмкіндік береді. Vim tar архивтерін ашып, олардың мазмұнын көрсетуге болады. GNU Emacs та tar архивін ашып, оның мазмұнын dired буферінде көрсетуге қабілетті.
Кездейсоқ қатынас
Tar форматы файлдар мен олардың қасиеттері үшін орталықтандырылған индекс немесе мазмұн тізімісіз жасалған, осылайша таспаға резервтік көшірме жасау құрылғыларына ағынмен жіберілуге арналған. Архивтің ішіндегі файлдарды тізімдеу немесе алу үшін оны бастапқыдан соңына дейін қатарымен оқу қажет. Үлкен Tar архивтері үшін бұл өнімділіктің төмендеуіне себеп болады, сондықтан Tar архивтері жеке файлдарға жиі кездейсоқ қол жеткізуді қажет ететін жағдайлар үшін қолайлы емес. Бірақ іздеуге болатын (яғни тиімді кездейсоқ оқуға мүмкіндік беретін) ортада сақталған дұрыс құрылған Tar файлында, бағдарлама файлдардың басындағы "өлшемі" саласына сәйкес файлдарды оқып өткізу арқылы файлды салыстырмалы түрде жылдам (файлдар санына пропорционал сызықтық уақытта) таба алады. Бұл GNU Tar-дағы опцияның негізі болып табылады. Егер Tar файлы толығымен қысылған болса, әдетте іздеуге болмайтын қысылу форматы осы оңтайландырудың жасалуына кедерес жасайды. Tar форматын білетін бірнеше "индексацияланған" компрессорлар қысылған файлдар үшін бұл мүмкіндікті қайта қалпына келтіре алады. Іздеу мүмкіндігін сақтау үшін Tar файлдарын дұрыс біріктіру қажет, яғни әр файлдың соңындағы нөлдік блокты жою керек.
Көшірмелері
Tar форматының тағы бір мәселесі – мұрағатта бірнеше (мүмкін, әртүрлі) файлдың бірдей жолдары мен файл атаулары болу мүмкіндігі. Мұндай мұрағатты ашу кезінде әдетте файлдың кейінгі нұсқасы бұрынғысын жазады. Бұл түсінікті емес (көзге көрінбейтін) тарбомба жасауға алып келуі мүмкін, ол техникалық тұрғыдан абсолютті жолдарға немесе жоғарыдағы каталогтарға сілтеме жасайтын файлдарды қамтымайды, бірақ ағымдағы каталогтан тыс файлдарды жазады (мысалы, мұрағатта бірдей жол мен файл атауы бар екі файл болуы мүмкін, олардың біріншісі – ағымдағы каталогтан тыс жерге сілтеме жасайтын символдық сілтеме, ал екіншісі – қалыпты файл; содан кейін кейбір tar іске асырулары мұндай мұрағатты ашу кезінде символдық сілтеме көрсеткен жерге жазуға себеп болуы мүмкін).
Сығымдалған файлдардың жұрнақтары
tar архивтері әдетте файл қосымшасы tar (мысалы, somefile.tar) болады. Tar архивінің ішіндегі файлдардың сығылмаған байт ағыны болады. Архивті сығыстыру үшін gzip, bzip2, xz, lzip, lzma, zstd немесе compress сияқты түрлі сығыстыру бағдарламалары қолжетімді, олардың барлығы tar архивін сығымдайды. Әдетте, архивтің сығылған түрі архив файлының атына форматқа тән сығыстырушының қосымшасын қосу арқылы аталды. Мысалы, archive.tar архиві gzip арқылы сығымдалғанда archive.tar.gz деп аталады. Tar-дың BSD және GNU нұсқалары сияқты танымал tar бағдарламалары архив файлын жасау немесе ашу кезінде сығыстыру немесе сығылған файлды ашу үшін Z (compress), z (gzip) және j (bzip2) командалық қатарларын қолдайды. Жақында қосылғандарға lzma (LZMA), lzop (lzop), xz немесе J (xz), lzip (lzip) және zstd жатады. Егер қолдау көрсетілетін файл кеңейтімдері қолданылса, бұл форматтардың сығылмайтын түрі автоматты түрде өңделеді, ал сығыстыру сол файл кеңейтімдерін қолдану арқылы автоматты түрде жүзеге асырылады, егер опция автоматты сығыстыру (қысқаша түрі a) GNU tar-дың қолданылатын нұсқасына берілсе. Танылмаған форматтарды қолмен сығыстыру немесе құбыр арқылы сығылмайтын түріне айналдыру қажет. MS DOS-тың 8.3 файл атауларының шектеулері сығылған tar архивтерін атау үшін қосымша талаптарға әкелді. Алайда, FAT енді ұзын файл атауларын ұсынатындықтан, бұл тәжірибе азайды. + Файл қосымшаларының эквиваленттеріCompressor Long Shortbzip2 tar.bz2 tb2, tbz, tbz2, tz2gzip tar.gz taz, tgzlzip tar.lz lzma tar.lzma tlzlzop tar.lzo xz tar.xz txzcompress tar.Z tZ, taZzstd tar.zst tzst