Які відмінності між bsdtar та GNU tar?


46

Я завжди використовував GNU tar. Однак усі дистрибутиви GNU / Linux, які я бачив, постачаються bsdtarв їх сховищах. Я навіть бачив його встановленим за замовчуванням в деяких, IIRC. Я точно знаю, що Arch GNU / Linux вимагає цього у складі basedevel(можливо base, але я не впевнений), як я це бачив у PKGBUILD.

Чому ви хочете використовувати bsdtarзамість GNU tar? Які переваги?

Зауважте, що я є людиною, яка запитала, які основні відмінності між BSD та GNU / Linux користувачем? .


Відповіді:


29

Ubuntu bsdtar- це фактично реалізація дьогтю libarchive; і це слід відрізняти від класичного bsdtar. Деякі варіанти BSD використовують libarchiveдля їх застосування на основі tar, наприклад FreeBSD.

GNUtarпідтримує інші варіанти смоли та автоматичне виявлення стиснення.

Коли візуалізація склеює розмиття з Ubuntu, там є кілька речей, які характерні для libarchive:

  1. libarchiveза визначенням є бібліотекою і відрізняється як від класичного, так bsdtarі GNUtarвід такого.
  2. libarchive не вдається прочитати деякі старі незрозумілі варіанти GNU tar, найбільш помітним було кодування деяких заголовків у base64, щоб файл tar був би 7-бітним чистим ASCII (це було у випадку з 1.13.6-1.13.11 та змінено у 1.13.12 , цей код був офіційно лише в дьогті протягом 2 тижнів)
  3. libarchive«S bsdtarбуде читати без дьогтю файлів (наприклад , поштовий індекс, ISO9660, CPIO), але класичний bsdtar не буде.

Тепер, коли ми libarchiveвийшли з шляху, це здебільшого зводиться до того, що підтримується в класичному bsdtar.

Ви можете самі подивитися сюди:

У своєму первісному запитанні ви запитали, які переваги мають класичні bsdtar, і я не впевнений, що вони є насправді. Це має значення лише тоді, якщо ви намагаєтеся написати сценарії оболонки, які потрібно працювати у всіх системах; вам потрібно переконатися, що те, що ви переходите, tarє дійсним у всіх варіантах.

GNUtar, libarchive«S bsdtar, класичні bsdtar, starі BusyBox" s tar, звичайно , в реалізації дьоготь , що ви будете працювати в більшу частину часу, але я впевнений , є й інші , там ( в початку QNX, наприклад). libarchive/ GNUtar/ starє найбільш функціональними, але багато в чому вони давно відхилилися від початкових стандартів (можливо, на краще).


15

BSDTAR проти TAR плюс багато іншого

Ось одна користь !!

Я збираюся розглянути тут 5 тем (і піти поза темою, але вона охопить і те, що ви хочете):

  1. bsdtar vs tar
  2. рідкісні файли проти ні
  3. товсті та тонкі файли / луни з btrfs
  4. товсті та тонкі файли / луни без btrfs
  5. різниться між товстим і тонким і тим, як це не стосується лише місячних

bsdtar обробляє розріджені файли краще, ніж звичайний тар

  • bsdtar візьме всі нулі та просто метадані їх
  • смола фактично обробляє кожен нуль

* приклад: уявіть 20 тб розрідженого файлу (званий biglun) з 10 мег даних протягом 20-ти tb sparsefile (biglun) ... тепер, оскільки це розріджений файл, він займе лише 10 мег на диску.

Як створити розріджений файл:

Рідкий файл - як його зробити - виявити - все Рідкі файли схожі на "тонкі" луни (якби ви використовували його для обіду). "товсті" місячні були б іншою історією.

* повернутися до теми:

  • Розпалювання biglun змусить дьоготь пройти всі 10 мегів разом із усіма ~ 20 тб гіршими за нулі, поширившись по ланцюгу ... пройде деякий час, я припускаю, і файл смоли буде досить великим. Також - витягнення його - я ніколи не робив витяг файлу tar з розрідженого файлу, але це може бути не дуже; Я можу помилитися тут.

  • bsdtarring biglun просто обробить 10 мег даних і зробить невеликі метадані для ~ 20 Тб нулів.

Вигода? Ну багато їх; Я просто написав дещо вище.

Це схоже на rsync vs cp

  • Крім того, якщо ви rsync гігантський розріджений файл, він буде вести себе як смола
  • Якщо ви cp-файл-гігант, він поводитиметься автоматично, як bsdtar (ви можете змінити cp'ss поведінку, щоб перейти через нулі, або не перейти через нулі)

Особисто мені подобається уявляти рідкісні файли, як тонкі луни, і звичайні файли, як товсті луни ...

Наступна тема - BTRFS з тонкими та товстими місяцями:

  • У таких файлових системах, як BTRFS , тонкі луни - це рідкісні файли (зробіть це з укороченням, як у документі wiki).

     truncate -s <size in kilobytes> filename
    

    порада: резервна копія з bsdtar , копія з cp

  • товсті луни - це звичайні файли з атрибутом + C (+ C, щоб він не мав COW, копіювати при записі, так що всі записи, по суті, залишаються там, де він призначений, і для цього файлу не відбувається нових записів, коли є перезаписи або видалення - дослідження COW і Btrfs ). Замість того, щоб створювати файл із скороченням, зробіть його з "fallocate -l"

    fallocate -l <size in kilobytes> filename
    chattr +C filename
    

    порада: резервна копія з bsdtar або tar, скопіюйте з rsync або cp

наступна тема - EXT тонкий проти товстий луна:

  • тонкі лунки, які рідкі

    truncate -s <size in kilobytes> filename
    

    порада: резервна копія з bsdtar , копія з cp

  • товсті луни - це звичайні файли з атрибутом + C (+ C, щоб він не мав COW, копіювати при записі, так що всі записи, по суті, залишаються там, де його призначено, і для цього файлу не відбувається нових записів, коли є перезаписи або видалення - дослідження COW і Btrfs ). Замість того, щоб створювати файл із скороченням, зробіть його з "fallocate -l"

    touch filename
    fallocate -l <size in kilobytes> filename
    

    порада: резервна копія з bsdtar або tar, скопіюйте з rsync або cp

Що товстий проти тонкий файл

  • товсті місяці / файли, заповнюють їхні дані від 0 до відведеного розміру, метадані роблять вигляд, де знаходяться 0. у міру заповнення даних вони заповнюються
  • товсті місяці / файли: заповніть свої дані на початку 0 або будь-яким іншим (ледачий нуль або нульовий нуль) - ці встановлені застереження (або як ZFS люблять називати перезавантаження)

СТАТТЯ VMWARE ТУТ описує ледачий проти нетерплячого нуля з товстими місяцями / файлами: https://communities.vmware.com/message/2199576

порада

пам’ятайте, що товсті та тонкі не стосуються лише місячних, вони можуть бути також у файлах, файлах системи zfs (файли / томи / луни), і я впевнений, що інші речі (просто подивіться на zfs)


1
Приємно і ретельно. Ласкаво просимо на сайт ...
eyoung100

1
- Рідкісні з будь-яким дьогтем: просто перейдіть на -S до більшості реалізацій tar, всі вони підтримували його давно. - Рідкий з rsync: знову ж таки, передайте --sparse, він працює. Мінусом використання будь-якого розрідженого виявлення є те, що інструмент повинен насправді читати блоки більше, що може ввести багато процесора (особливо у випадках чергування нульових / ненульових прогонів).
robbat2

Ще краще використовувати bsdtar, хоча gnu tar підтримує рідкісний прапор, тому що bsdtar знає, як пропускати через розрізнені отвори, не обробляючи їх (наприклад, якщо у вас є розріджений файл на 1 ТБ із лише 1k даних, bsdtar обробить 1k з дані. Gnu tar буде обробляти 1 ТБ.
moveaway00

13

З опису пакета Ubuntu ( http://packages.ubuntu.com/de/lucid/bsdtar )

"Програма bsdtar має низку переваг перед попередніми технологіями реалізації tar:

  • Бібліотека. Оскільки основна функціональність знаходиться в бібліотеці, її можна використовувати за допомогою інших інструментів, таких як pkg_add.
  • Автоматичне виявлення формату. Libarchive автоматично визначає стиснення (none / gzip / bzip2) та формат (old tar, ustar, gnutar, pax, cpio, iso9660, zip) під час читання архівів. Це робиться для будь-якого джерела даних.
  • Підтримка формату обміну Pax. Це розширення POSIX / SUSv3 до старого формату tar "ustar", що додає довільні розширені атрибути до кожного запису. Робить все, що робить формат GNU tar, тільки краще.
  • Обробляє прапори файлів, ACL, довільні імена шляхів тощо. Формат обміну Pax підтримує атрибути ключа / значення, використовуючи легко розширювану техніку. Довільні імена шляхів, імена груп, імена користувачів, розміри файлів є частиною стандарту POSIX; libarchive поширює це на підтримку прапорів файлів, ACL та довільних номерів пристроїв.
  • Підтримка GNU tar. Бібліотека читає більшість архівів GNU tar. Якщо є попит, це можна вдосконалити далі ».

1

Далі базується на читанні, а не на досвіді - я тільки починаю з Freebsd, тому у мене майже немає реального досвіду з цим (я здебільшого з Linux). Прошу вибачення (і смиренно прошу виправити), якщо я пропустив щось важливе і що тут я кажу - сміття ...

З мого читання сторінок керівництва (останнім часом тієї, що переглянулася вище http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 ) у дьогті Freebsd бракує (-d, --diff , --порівняти) здатність. Це не дивно, оскільки, здається, автори дамп / реставрації Freebsd теж нічого подібного не забезпечували.

Я не знаю напевно, чи буде Gnu tar містити всі метадані UFS, як, як кажуть, Freebsd tar, і це важливе питання. Але на мій смак, я НІКОЛИ не можу вважати, що дамп завершено, поки я не збережу суму MD5 вихідного файлу, а потім порівняв дамп-файл із даними, які я щойно нібито скинув. Різні проблеми можуть призвести до того, що демпінгові дані відрізняються від даних на диску. (Не лише зміни файлів, а помилки диска, помилки пам’яті, помилки машини тощо). Все це справді трапилося зі мною.)

На мою думку, це робить Gnu tar єдиним варіантом, який я до цього часу знайшов для створення справжніх резервних копій на фондовій системі Freebsd.

Я дуже хотів би дізнатися інакше, FWIW. Я вважаю за краще використовувати рідні утиліти принаймні для клонування розділів та резервного копіювання важкого відновлення. Але якщо не вдається перевірити правильність дампа, я не бачу сенсу намагатися його створити.


1
  • bsdtar може читати та націлювати членів, які надходять з інших архівів, використовуючи @archiveсинтаксис

  • В GNU tar є --deleteможливість - хоча останнім часом я виявив, що він може пошкодити архів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.