Quelles sont les différences entre bsdtar et GNU tar?

J'ai toujours utilisé GNU tar . Cependant, toutes les dissortingbutions GNU / Linux que j'ai vues embarquent bsdtar dans leurs référentiels. Je l'ai même vu installé par défaut dans certains, IIRC. Je sais avec certitude que Arch GNU / Linux l'exige en tant que partie de basedevel (peut base être de base , mais je ne suis pas sûr), comme je l'ai vu dans PKGBUILDs.

Pourquoi voudriez-vous utiliser bsdtar au lieu de GNU tar ? Quels sont les avantages?

Notez que je suis la personne qui a demandé Quelles sont les principales différences entre BSD et GNU / Linux userland? .

Le bsdtar Ubuntu est en fait l'implémentation de tar libarchive avec libarchive ; et cela devrait être différencié du bsdtar classique. Certaines variantes BSD utilisent libarchive pour leur implémentation tar, par exemple FreeBSD.

GNUtar prend en charge les autres variantes de tar et la détection de compression automatique.

Comme la visualisation a collé le text de présentation d'Ubuntu, il y a quelques éléments spécifiques à libarchive :

  1. libarchive est par définition une bibliothèque, et différente de bsdtar classique et GNUtar de cette façon.
  2. libarchive ne peut pas lire certaines anciennes libarchive obscures de GNU tar, le plus notable étant le encoding de certains en-têtes dans base64, de sorte que le file tar serait ASCII propre 7 bits (c'était le cas pour 1.13.6-1.13.11 et changé en 1.13. 12, ce code était seulement officiellement dans le goudron pendant 2 semaines)
  3. libarchive de bsdtar lira les files non-tar (zip, iso9660, cpio), mais pas bsdtar classique.

Maintenant que nous sums libarchive , cela revient surtout à ce qui est supporté par le bsdtar classique.

Vous pouvez voir les pages de manuel vous-même ici:

  • GNU tar (1)
  • FreeBSD tar (1) – libarchif
  • NetBSD tar (1)
  • OpenBSD tar (1)
  • Standard / Schily tar (1) – encore une autre implémentation de tar, aucun inheritance à aucun autre
  • busybox (1) – Implémentation mini tar pour BusyBox, commune dans les systèmes embarqués

Dans votre question initiale, vous avez demandé quels sont les avantages du bsdtar classique, et je ne suis pas sûr qu'il y en ait vraiment. La seule fois que c'est vraiment important, c'est si vous essayez d'écrire des scripts shell qui doivent fonctionner sur tous les systèmes; vous devez vous assurer que ce que vous transmettez à tar est réellement valide dans toutes les variantes.

GNUtar , libarchive de bsdtar , bsdtar classique, star et tar BusyBox sont certainement les implémentations tar que vous rencontrerez le plus souvent, mais je suis certain qu'il y en a d'autres là-bas (QNX par exemple). libarchive / GNUtar / star sont les plus GNUtar fonctionnalités, mais à bien des égards ils ont longtime dévié des normes d'origine (peut-être pour le mieux).

De la description du package Ubuntu ( http://packages.ubuntu.com/de/lucid/bsdtar )

"Le programme bsdtar présente un certain nombre d'avantages par rapport aux implémentations tar antérieures:

  • Bibliothèque. Comme la fonctionnalité principale se trouve dans une bibliothèque, elle peut être utilisée par d'autres outils, tels que pkg_add.
  • Détection automatique du format. Libarchive détecte automatiquement la compression (none / gzip / bzip2) et le format (old tar, ustar, gnutar, pax, cpio, iso9660, zip) lors de la lecture des archives. Il le fait pour n'importe quelle source de données.
  • Prise en charge du format Pax Interchange. Il s'agit d'une extension POSIX / SUSv3 à l'ancien format tar "ustar" qui ajoute des attributes étendus arbitraires à chaque input. Est-ce que tout ce que le format tar GNU fait, seulement mieux.
  • Gère les indicateurs de file, les lists de contrôle d'access, les noms de paths arbitraires, etc. Le format d'échange Pax prend en charge les attributes key / valeur à l'aide d'une technique facilement extensible. Les noms de paths arbitraires, les noms de groupes, les noms d'users, les tailles de files font partie de la norme POSIX; libarchive étend cela en prenant en charge les indicateurs de file, les lists de contrôle d'access et les numéros de périphériques arbitraires.
  • Prise en charge GNU tar. Libarchive lit la plupart des archives GNU tar. S'il y a une request, cela peut être amélioré davantage. "

BSDTAR vs TAR plus beaucoup plus

Voici un avantage !!

Je vais aller dans 5 sujets ici (et aller bien loin du sujet, mais il couvrira ce que vous voulez aussi):

  1. bsdtar vs tar
  2. files clairsemés vs non
  3. files épais et minces / luns avec btrfs
  4. files épais et minces / luns sans btrfs
  5. diff entre épais et mince et comment il ne s'applique pas à luns juste

bsdtar gère les files épars mieux que le tar normal

  • bsdtar va prendre tous les zéros et juste les métadonner
  • tar traitera en fait tous les zéros

* exemple: imaginez un file sparse de 20 tb (appelé biglun) avec 10 megs de données à travers le file sparsefile de 20 tb (biglun) … maintenant puisqu'il s'agit d'un file sparse, il ne prendra que 10 Mo sur le disque

comment faire un file clairsemé:

Fichier Sparse – comment le faire – le détecter – tout Les files Sparse sont comme des "lun" minces (si vous deviez l'utiliser pour un lun). "lun" épais serait autre histoire.

* return au sujet:

  • tarer le biglun, fera passer le goudron à travers tous les 10 megs avec tous les ~ 20tb pire des zéros répartis à travers le lun … cela prendra un certain time je présume. et le file tar sera assez gros. Aussi l'extraire (jamais fait un extrait d'un file tar d'un file clairsemé, mais il pourrait ne pas être joli – je pourrais avoir tort herE)

  • bsdtarring le biglun va juste traiter les 10 megs de données, et faire de petites métadonnées pour le ~ 20tb de zéros.

Avantage? Eh bien beaucoup d'entre eux, je viens d'écrire certains ci-dessus

Il ressemble à rsync vs cp

  • Aussi, si vous rsync un file sparse géant, il se comportera comme du goudron
  • Si vous cp un file géant, il se comportera automatiquement comme bsdtar (vous pouvez changer le comportement de cps pour passer les zéros, ou ne pas dépasser les zéros)

Personnellement, j'aime imaginer des files épars, comme des luns minces, et des files réguliers comme des luns épais …

Le sujet suivant est BTRFS thin vs thick luns:

  • Avec les filesystems tels que BTRFS , les files thin sont des files épars (le rendre tronqué, comme dans le wiki doc).

      truncate -s <size in kilobytes> filename 

    conseil: sauvegarde avec bsdtar , copy avec cp

  • les LUN épais sont des files réguliers avec l'atsortingbut + C (+ C pour qu'il ne soit pas COW, copyr sur écriture, de sorte que toutes les écritures restnt fidèles à l'endroit où il est alloué et pas de nouvelles écritures pour ce file quand il y a des écrasements ou supprime – search COW et BTRFS ). Au lieu de rendre le file tronqué, faites-le avec "fallocate -l"

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

    tip: sauvegarde avec bsdtar ou tar, copy avec rsync ou cp

le prochain sujet est EXT minces vs gros luns:

  • minces luns qui sont rares

     truncate -s <size in kilobytes> filename 

    conseil: sauvegarde avec bsdtar , copy avec cp

  • les LUN épais sont des files réguliers avec l'atsortingbut + C (+ C pour qu'il ne soit pas COW, copyr sur écriture, de sorte que toutes les écritures restnt fidèles à l'endroit où il est alloué et pas de nouvelles écritures pour ce file quand il y a des écrasements ou supprime – search COW et BTRFS ). Au lieu de rendre le file tronqué, faites-le avec "fallocate -l"

     touch filename fallocate -l <size in kilobytes> filename 

    tip: sauvegarde avec bsdtar ou tar, copy avec rsync ou cp

quel est un file épais vs mince

  • des files / files épais, remplissent leurs données de 0 à la taille allouée, les métadonnées font semblant où se trouvent les 0. lorsque vous remplissez datatables, datatables se remplissent
  • épais luns / files: remplissez leurs données au début avec 0s ou quoi que ce soit (zéro paresseux ou avide zéro) – ces réservations de jeu (ou comme ZFS aime appeler refreservations)

ARTICLE VMWARE ICI décrit paresseux vs avide zéro avec des files lun / files épais: https://communities.vmware.com/message/2199576

pointe

callbackez-vous épais et mince ne s'applique pas seulement aux luns, il peut également être sur les files, les filesystems zfs (partages / volumes / luns), et je suis sûr d'autres choses (il suffit de regarder zfs)

Ce qui suit est basé sur la lecture, pas sur l'expérience – je commence juste avec Freebsd, donc je n'ai presque aucune expérience réelle (je viens principalement de Linux). Je m'excuse (et je sollicite humblement la correction) si j'ai manqué quelque chose d'important et que ce que je dis ici, c'est des ordures …

De ma lecture des pages de manuel (plus récemment celle ref'd ci-dessus http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 ) le tar de Freebsd manque le (-d, –diff , –compare). Ce n'est pas surprenant, car les auteurs de FreeBSD ne semblent pas avoir fourni quelque chose comme ça non plus.

Je ne sais pas avec certitude si le gnu tar incorporera toutes les métadonnées UFS comme le fait FreeBSD tar, et c'est un problème important. Mais à mon goût, je ne peux JAMAIS considérer un vidage pour être complété jusqu'à ce que j'aie stocké une sum MD5 du file de sortie, ET ALORS ai comparé le file de vidage aux données que je viens de supposer vidées. Divers problèmes peuvent conduire à ce que datatables stockées soient différentes de ce qui est sur le disque. (Pas seulement les changements de files, mais aussi les erreurs de disque, les erreurs de memory, les erreurs de machine, etc.).

À mon avis, cela fait de Gnu tar la seule option que j'ai trouvée jusqu'ici pour créer de véritables sauvegardes sur un système stock FreeBSD.

J'aimerais beaucoup aimer apprendre autrement, FWIW. Je préférerais utiliser les utilitaires natifs au less pour le clonage de partition et les sauvegardes de récupération matérielle. Mais si on ne peut pas vérifier l'exactitude d'une décharge, je ne vois pas l'intérêt d'en créer une.