J'ai toujours utilisé GNU tar
. Cependant, toutes les distributions GNU/Linux que j'ai vues sont expédiées 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 dans le cadre de basedevel
(peut-être 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? .
Ubuntu bsdtar
est en fait l'implémentation tar fournie avec libarchive
; et cela devrait être différencié du bsdtar
classique. Certaines variantes de BSD utilisent libarchive
pour leur implémentation tar, par exemple FreeBSD.
GNUtar
prend en charge les autres variantes tar et la détection de compression automatique.
Lorsque visualisation a collé le texte de présentation d'Ubuntu, il y a quelques éléments spécifiques à libarchive
:
libarchive
est par définition une bibliothèque, et diffère à la fois du classique bsdtar
et GNUtar
de cette façon.libarchive
ne peut pas lire certaines anciennes versions obscures GNU tar, la plus notable étant le codage de certains en-têtes en base64, de sorte que le fichier tar soit 7 bits propre ASCII (ce fut le cas pour 1.13.6-1.13.11 et changé en 1.13.12, ce code n'était officiellement dans tar que pendant 2 semaines)libarchive
_ bsdtar
lira les fichiers non tar (par exemple Zip, iso9660, cpio), mais pas bsdtar classique.Maintenant que nous avons mis libarchive
à l'écart, cela se résume principalement à ce qui est pris en charge dans le bsdtar
classique.
Vous pouvez voir les pages de manuel vous-même ici:
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 où cela compte vraiment, 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
's bsdtar
, classique bsdtar
, star
et BusyBox
's tar
sont certainement les implémentations tar que vous rencontrerez la plupart du temps, mais je suis certain qu'il y en a d'autres (au début QNX par exemple). libarchive
/GNUtar
/star
sont les plus riches en fonctionnalités, mais à bien des égards, ils ont longtemps dévié des normes d'origine (peut-être pour le mieux).
Voici un avantage !!
Je vais entrer dans 5 sujets ici (et aller loin du sujet, mais cela couvrira aussi ce que vous voulez):
bsdtar gère mieux les fichiers clairsemés que réguliers tar
* exemple: imaginez un fichier clairsemé de 20 tb (appelé biglun) avec 10 mégaoctets de données dans le fichier sparsefile de 20 tb (biglun) ... maintenant depuis ce est un fichier clairsemé, il ne prendra que 10 Mo sur le disque.
Comment créer un fichier clairsemé:
Fichier clairsemé - comment le faire - le détecter - tout Les fichiers clairsemés sont comme des lunes "minces" (si vous deviez l'utiliser pour un lun). les lunes "épaisses" seraient une autre histoire.
* retour au sujet:
tarer le biglun fera goudron passer par tous les 10 mégas avec tous les pires ~ 20tb de zéros répartis sur le lun ... cela prendra un certain temps je présume, et le fichier tar sera assez gros. Aussi - en l'extrayant - je n'ai jamais fait d'extrait d'un fichier tar d'un fichier clairsemé, mais ce n'est peut-être pas joli; Je me trompe peut-être ici.
bsdtarring le biglun ne traitera que les 10 mégas de données et créera de petites métadonnées pour les ~ 20 To de zéros.
Avantage? Eh bien, beaucoup d'entre eux; Je viens d'en écrire ci-dessus.
C'est similaire à rsync vs cp
Personnellement, j'aime imaginer des fichiers clairsemés comme des luns minces, et des fichiers réguliers comme des luns épais ...
Avec des systèmes de fichiers comme [~ # ~] btrfs [~ # ~] , les lunes minces sont des fichiers clairsemés (faites-le avec tronqué, comme dans le wiki wiki) .
truncate -s <size in kilobytes> filename
astuce: sauvegarde avec bsdtar , copie avec cp
les lunes épaisses sont des fichiers normaux avec l'attribut + C (+ C de façon à ce qu'il n'y ait pas de vache, copie à l'écriture, de sorte que toutes les écritures restent essentiellement là où elles sont allouées, et aucune nouvelle écriture ne se produit pour ce fichier lorsqu'il y a des écrasements ou supprime - recherche [~ # ~] vache [~ # ~] et [~ # ~] btrfs [ ~ # ~] ). Au lieu de faire le fichier avec tronquer, faites-le avec "fallocate -l"
fallocate -l <size in kilobytes> filename
chattr +C filename
astuce: sauvegarde avec bsdtar ou tar, copie avec rsync ou cp
des lunes minces et clairsemées
truncate -s <size in kilobytes> filename
astuce: sauvegarde avec bsdtar , copie avec cp
les lunes épaisses sont des fichiers normaux avec l'attribut + C (+ C de sorte qu'il ne se transforme pas en COW, copie en écriture, de sorte que toutes les écritures restent essentiellement là où elles sont allouées, et aucune nouvelle écriture ne se produit pour ce fichier lorsqu'il y a des écrasements ou supprime - recherche [~ # ~] vache [~ # ~] et [~ # ~] btrfs [ ~ # ~] ). Au lieu de faire le fichier avec tronquer, faites-le avec "fallocate -l"
touch filename
fallocate -l <size in kilobytes> filename
astuce: sauvegarde avec bsdtar ou tar, copie avec rsync ou cp
L'ARTICLE DE VMWARE ICI décrit le paresseux contre le zéro enthousiaste avec des fichiers/fichiers épais: https://communities.vmware.com/message/2199576
rappelez-vous que l'épaisseur et la fin ne s'appliquent pas seulement aux luns, ils peuvent également être sur des fichiers, des systèmes de fichiers zfs (partages/volumes/luns), et je suis sûr que d'autres choses (regardez simplement zfs).
Depuis la description du paquet Ubuntu ( http://packages.ubuntu.com/de/lucid/bsdtar )
"Le programme bsdtar présente un certain nombre d'avantages par rapport aux implémentations tar précédentes:
Ce qui suit est basé sur la lecture, pas sur l'expérience - je ne fais que commencer avec Freebsd donc je n'ai pratiquement aucune expérience réelle avec lui (je viens principalement de Linux). Je m'excuse (et sollicite humblement la correction) si j'ai raté quelque chose d'important et ce que je dis ici est des ordures ...
D'après ma lecture des pages de manuel (plus récemment celle référencée ci-dessus http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 ) le goudron Freebsd n'a pas le (-d, --diff, --compare). Ce n'est pas surprenant, car les auteurs de Freebsd dump/restore ne semblent pas avoir fourni quoi que ce soit de semblable non plus.
Je ne sais pas avec certitude si le tar Gnu incorporera toutes les métadonnées UFS comme le dit le tar Freebsd, et c'est un problème important. Mais à mon goût, je ne peux JAMAIS considérer un vidage comme terminé tant que je n'ai pas stocké une somme MD5 du fichier de sortie, ET PUIS comparer le fichier de vidage avec les données que je viens de supposément vider. Divers problèmes peuvent entraîner une différence entre les données sauvegardées et celles présentes sur le disque. (Pas seulement des changements de fichiers, mais des erreurs de disque, des erreurs de mémoire, des défauts de machine, etc.). Tout cela m'est réellement arrivé.)
À mon avis, cela fait de Gnu tar la seule option que j'ai trouvée jusqu'à présent pour créer de véritables sauvegardes sur un système Freebsd standard.
J'aimerais beaucoup apprendre le contraire, FWIW. Je préfère utiliser les utilitaires natifs au moins pour le clonage de partition et les sauvegardes de récupération matérielle. Mais si l'on ne peut pas vérifier l'exactitude d'un vidage, je ne vois pas l'intérêt de prendre la peine d'en créer un.
bsdtar peut lire et tarer les membres provenant d'autres archives en utilisant le @archive
syntaxe
GNU tar a le --delete
option - mais récemment, j'ai trouvé que cela pouvait corrompre l'archive.