Solución:
El Ubuntu bsdtar
es en realidad la implementación de tar incluida con libarchive
; y eso debe diferenciarse de los clásicos bsdtar
. Algunas variantes de BSD utilizan libarchive
para su implementación de tar, por ejemplo, FreeBSD.
GNUtar
admite las otras variantes de alquitrán y la detección automática de compresión.
Como visualización pegó la propaganda de Ubuntu, hay algunas cosas allí que son específicas para libarchive
:
-
libarchive
es por definicin una biblioteca, y diferente de los dos clsicosbsdtar
yGNUtar
de ese modo. -
libarchive
no puede leer algunas variaciones antiguas oscuras de GNU tar, la más notable fue la codificación de algunos encabezados en base64, por lo que el archivo tar sería ASCII limpio de 7 bits (este fue el caso para 1.13.6-1.13.11 y cambiado en 1.13.12 , ese código solo estuvo oficialmente en alquitrán durante 2 semanas) -
libarchive
‘sbsdtar
leerá archivos no tar (por ejemplo, zip, iso9660, cpio), pero el bsdtar clásico no lo hará.
Ahora que hemos conseguido libarchive
fuera del camino, se reduce principalmente a lo que se admite en el clásico bsdtar
.
Puede ver las páginas de manual usted mismo aquí:
- Alquitrán GNU (1)
- FreeBSD tar (1) – basado en libarchive
- Alquitrán de NetBSD (1)
- Tar de OpenBSD (1)
- Standard / Schily tar (1): la implementación de alquitrán libre más antigua, sin herencia de ninguna otra
- busybox (1): implementación de mini tar para BusyBox, común en sistemas integrados
En su pregunta original, preguntó cuáles son las ventajas del clásico bsdtar
, y no estoy seguro de que realmente haya alguno. El único momento en el que realmente importa es si está intentando escribir scripts de shell que deben funcionar en todos los sistemas; tienes que asegurarte de lo que pasas tar
es realmente válido en todas las variantes.
GNUtar
, libarchive
‘s bsdtar
, clásico bsdtar
, star
y BusyBox
‘s tar
son ciertamente las implementaciones de tar con las que se encontrará la mayor parte del tiempo, pero estoy seguro de que hay otras (por ejemplo, QNX temprano). libarchive
/GNUtar
/star
son las más repletas de funciones, pero en muchos sentidos se han desviado de los estándares originales (posiblemente para mejor).
BSDTAR vs TAR y mucho más
¡Aquí hay un beneficio!
Voy a entrar en 5 temas aquí (y me desviaré del tema, pero también cubrirá lo que quieres):
- bsdtar vs alquitrán
- archivos dispersos vs no
- archivos / luns gruesos y delgados con btrfs
- archivos / luns gruesos y delgados sin btrfs
- diferencia entre grueso y delgado y cómo no se aplica solo a luns
bsdtar maneja archivos dispersos mejor que los regulares alquitrán
- bsdtar tomará todos los ceros y solo los metadata
- tar procesará cada cero
*ejemplo:
imagine un archivo disperso de 20 tb (llamado biglun) con 10 megas de datos a lo largo del archivo disperso de 20 tb (biglun) … ahora, dado que se trata de un archivo disperso, solo ocupará 10 megas en la unidad.
Cómo hacer un archivo disperso:
Archivo disperso – cómo hacerlo – detectarlo – todo Los archivos dispersos son como luns “delgados” (si lo usaras para un lun). luns “gruesos” sería una historia diferente.
* volver al tema:
-
talar el biglun hará que tar atraviese los 10 megas junto con todos los ~ 20 tb peores de ceros repartidos por todo el lun … supongo que llevará algún tiempo, y el archivo tar será bastante grande. Además, extrayéndolo, nunca he extraído un archivo tar de un archivo disperso, pero puede que no sea bonito; Podría estar equivocado aquí.
-
bsdtarring the biglun solo procesará los 10 megas de datos y creará pequeños metadatos para los ~ 20 tb de ceros.
¿Beneficio? Bueno, muchos de ellos; Acabo de escribir algunos arriba.
Es similar a rsync vs cp
- Además, si sincroniza un archivo disperso gigante, se comportará como tar
- Si cp un archivo gigante, se comportará automáticamente como bsdtar (puede cambiar el comportamiento de cp para pasar por encima de los ceros, o no pasar por encima de los ceros)
Personalmente, me gusta imaginar archivos dispersos como luns delgados y archivos regulares como luns gruesos …
El siguiente tema es BTRFS luns delgados vs gruesos:
-
Con sistemas de archivos como BTRFS, los luns delgados son archivos dispersos (hágalo con truncar, como en el documento wiki).
truncate -s <size in kilobytes> filename
propina: copia de seguridad con bsdtar, copia con cp
-
Los luns gruesos son archivos regulares con el atributo + C (+ C para que no sea VACÍO, copia en escritura, de modo que todas las escrituras permanezcan esencialmente en el lugar donde está asignado, y no suceden nuevas escrituras para ese archivo cuando hay sobrescrituras o elimina – investiga VACA y BTRFS). En lugar de hacer el archivo con truncar, hágalo con “fallocate -l”
fallocate -l <size in kilobytes> filename chattr +C filename
propina: copia de seguridad con bsdtar o tar, copia con rsync o cp
El siguiente tema es EXT luns finos vs gruesos:
-
luns delgados que son escasos
truncate -s <size in kilobytes> filename
propina: copia de seguridad con bsdtar, copia con cp
-
Los luns gruesos son archivos regulares con el atributo + C (+ C para que no sea VACÍO, copia en escritura, de modo que todas las escrituras permanezcan esencialmente en el lugar al que están asignadas, y no suceden nuevas escrituras para ese archivo cuando hay sobrescrituras o elimina – investiga VACA y BTRFS). En lugar de hacer el archivo con truncar, hágalo con “fallocate -l”
touch filename fallocate -l <size in kilobytes> filename
propina: copia de seguridad con bsdtar o tar, copia con rsync o cp
¿Qué es un archivo grueso vs delgado?
- luns / archivos gruesos, llenan sus datos desde 0 hasta el tamaño asignado, los metadatos simulan dónde están los 0. a medida que llena los datos, los datos se llenan
- luns / archivos gruesos: llene sus datos al principio con 0 o lo que sea (cero perezoso o cero ansioso): estos establecen reservas (o como ZFS le gusta llamar a las renovaciones)
EL ARTÍCULO DE VMWARE AQUÍ describe un cero perezoso frente a un cero ansioso con archivos / luns gruesos: https://communities.vmware.com/message/2199576
propina
recuerde que lo grueso y lo delgado no solo se aplica a luns, también puede estar en archivos, sistemas de archivos zfs (recursos compartidos / volúmenes / luns), y estoy seguro de que otras cosas (solo mire zfs).
De la descripción del paquete de Ubuntu:
El programa bsdtar tiene una serie de ventajas sobre las implementaciones anteriores de tar:
- Biblioteca. Dado que la funcionalidad principal está en una biblioteca, puede ser utilizada por otras herramientas, como pkg_add.
- Detección automática de formato. Libarchive detecta automáticamente la compresión (none / gzip / bzip2) y el formato (old tar, ustar, gnutar, pax, cpio, iso9660, zip) al leer archivos. Hace esto para cualquier fuente de datos.
- Soporte de formato de intercambio de Pax. Esta es una extensión POSIX / SUSv3 del antiguo formato tar “ustar” que agrega atributos extendidos arbitrarios a cada entrada. Hace todo lo que hace el formato tar de GNU, solo que mejor.
- Maneja banderas de archivos, ACL, rutas arbitrarias, etc. El formato de intercambio de Pax admite atributos clave / valor utilizando una técnica fácilmente extensible. Los nombres de rutas arbitrarios, nombres de grupos, nombres de usuarios y tamaños de archivos son parte del estándar POSIX; libarchive amplía esto con soporte para marcas de archivo, ACL y números de dispositivo arbitrarios.
- Soporte GNU tar. Libarchive lee la mayoría de los archivos tar de GNU. Si hay demanda, esto se puede mejorar aún más.