Quais são as diferenças entre o bsdtar e o GNU tar?

43

Eu sempre usei o GNU tar . No entanto, todas as distribuições GNU / Linux que eu vi enviam bsdtar em seus repositórios. Eu já vi isso instalado por padrão em alguns, IIRC. Eu sei com certeza que o Arch GNU / Linux exige isso como parte do basedevel (talvez base , mas não tenho certeza), como eu já vi nos PKGBUILDs.

Por que você deseja usar bsdtar em vez de GNU tar ? Quais são as vantagens?

Note que eu sou a pessoa que perguntou Quais são as principais diferenças entre o usuário do BSD e o GNU / Linux? .

    
por strugee 18.11.2013 / 02:57

5 respostas

28

O Ubuntu bsdtar é na verdade a implementação do tar empacotada com libarchive ; e isso deve ser diferenciado do clássico bsdtar . Algumas variantes BSD usam libarchive para sua implementação tar, por exemplo, FreeBSD.

GNUtar suporta as outras variantes de alcatrão e a detecção automática de compactação .

Como visualication colou a sinopse do Ubuntu, existem algumas coisas que são específicas de libarchive :

  1. libarchive é, por definição, uma biblioteca e diferente dos clássicos bsdtar e GNUtar desse modo.
  2. libarchive não pode ler algumas variações obscuras de tar GNU mais antigas, a mais notável foi a codificação de alguns cabeçalhos em base64, de modo que o arquivo tar seria ASCII limpo de 7 bits (foi o caso de 1.13.6-1.13.11 e alterado em 1.13.12, esse código foi oficialmente apenas no tar por 2 semanas)
  3. libarchive bsdtar lerá arquivos não-tar (por exemplo, zip, iso9660, cpio), mas o bsdtar clássico não.

Agora que obtivemos libarchive fora do caminho, a maioria se resume ao que é suportado no bsdtar clássico.

Você pode ver as manpages aqui:

Na sua pergunta original, você perguntou quais são as vantagens para o clássico bsdtar , e não tenho certeza se há realmente algum. A única vez que realmente importa é se você está tentando escrever scripts de shell que precisam funcionar em todos os sistemas; você precisa ter certeza de que o que você passa para tar é realmente válido em todas as variantes.

GNUtar , libarchive bsdtar , clássico bsdtar , star e BusyBox tar são certamente as implementações de tar que você executará na maioria das vezes, mas Estou certo de que há outros por aí (início do QNX, por exemplo). libarchive / GNUtar / star são os mais repletos de recursos, mas, em muitos aspectos, há muito se desviam dos padrões originais (possivelmente para melhor).

    
por 08.12.2013 / 01:20
14

BSDTAR vs TAR e muito mais

Aqui está um benefício !!

Eu vou entrar em 5 tópicos aqui (e sair do tópico, mas ele vai cobrir o que você quer também):

  1. bsdtar vs tar
  2. arquivos esparsos vs não
  3. arquivos grossos e finos / luns com btrfs
  4. arquivos / luns espessos e finos sem btrfs
  5. difira entre grosso e fino e como ele não se aplica apenas a luns

bsdtar lida com arquivos esparsos melhor que o tar

  • O bsdtar pegará todos os zeros e os metadará apenas
  • O
  • tar processará a cada zero

* exemplo: imagine um arquivo esparso de 20 tb (chamado biglun) com 10 megas de dados em todo o arquivo esparso de 20 tb (biglun) ... agora, como esse é um arquivo esparso, ele ocupará apenas 10 megas na unidade.

Como criar um arquivo esparso:

Arquivo esparso - como fazer - detectar - tudo Arquivos esparsos são como "thin" luns (se você fosse usá-lo para um lun). Luns "grossas" seriam histórias diferentes.

* volta ao tópico:

  • Atingir o biglun fará o alcatrão passar por todos os 10 megas juntamente com todo o ~ 20tb pior de zeros espalhados pelo lun ... vai levar algum tempo eu presumo, e o arquivo tar será bem grande. Também - extraí-lo - nunca fiz um extrato de um arquivo tar de um arquivo esparso, mas pode não ser bonito; Eu posso estar errado aqui.

  • bsdtarring o biglun processará apenas os 10 megas de dados e fará pequenos metadados para os ~ 20 tb de zeros.

Beneficiar? Bem muitos deles; Acabei de escrever alguns acima.

É semelhante ao rsync vs cp

  • Além disso, se você rsync um arquivo esparso gigante, ele se comportará como tar
  • Se você cp um arquivo gigante, ele se comportará automaticamente como bsdtar (você pode alterar o comportamento do cp para passar dos zeros ou não passar dos zeros)

Pessoalmente, eu gosto de imaginar arquivos esparsos como luns finos e arquivos regulares como luns grossos ...

O próximo tópico é BTRFS fino versus sólido:

  • Com sistemas de arquivos como BTRFS , luns thin são arquivos esparsos (faça com truncate, como no doc do wiki).

     truncate -s <size in kilobytes> filename
    

    tip: backup com bsdtar , copie com cp

  • thick luns são arquivos regulares com o atributo + C (+ C para que ele não torne nada COW, copie em write, de modo que todas as gravações permaneçam essencialmente onde ele está alocado, e nenhuma nova gravação acontece para aquele arquivo quando existem sobrescritos ou exclusões - pesquisa COW e BTRFS ). Em vez de fazer o arquivo com truncar, faça com "fallocate -l"

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

    tip: backup com bsdtar ou tar, copie com rsync ou cp

o próximo tópico é EXT thin vs thick luns:

  • Luns finas que são esparsas

    truncate -s <size in kilobytes> filename
    

    tip: backup com bsdtar , copie com cp

  • thick luns são arquivos regulares com o atributo + C (+ C para que ele não torne nada COW, copie na gravação, de modo que todas as gravações permaneçam essencialmente no local onde estão alocadas, e nenhuma nova gravação acontece para esse arquivo quando existem sobrescritos ou exclusões - pesquisa COW e BTRFS ). Em vez de fazer o arquivo com truncar, faça com "fallocate -l"

    touch filename
    fallocate -l <size in kilobytes> filename
    

    tip: backup com bsdtar ou tar, copie com rsync ou cp

o que é um arquivo espesso vs thin

  • luns / files de espessura, preenche os dados de 0 até o tamanho alocado, os metadados fingem onde estão os 0s. à medida que você preenche os dados, os dados são preenchidos
  • luns / files de espessura: preencha seus dados no início com 0s ou o que for (zero preguiçoso ou ansioso zero) - essas reservas configuradas (ou como o ZFS gosta de chamar de atualizações)

O ARTIGO DE VMWARE AQUI descreve o preguiçoso e ansioso zero com limas / arquivos espessos: link

dica

lembre-se que thick e thin não se aplicam apenas a luns, também pode estar em arquivos, zfs filesystems (compartilhamentos / volumes / luns), e tenho certeza de outras coisas (olhe apenas para zfs).

    
por 10.11.2014 / 21:23
12

A partir da descrição do pacote Ubuntu ( link )

"O programa bsdtar tem várias vantagens sobre implementações de alcatrão anteriores:

  • Biblioteca. Como a funcionalidade principal está em uma biblioteca, ela pode ser usado por outras ferramentas, como pkg_add.
  • Detecção automática de formato. Libarchive detecta automaticamente o compressão (nenhum / gzip / bzip2) e formato (tar antigo, ustar, gnutar, pax, cpio, iso9660, zip) ao ler arquivos. Faz isso por qualquer fonte de dados.
  • Suporte ao formato de intercâmbio Pax. Esta é uma extensão POSIX / SUSv3 para o antigo formato tar "ustar" que adiciona atributos estendidos arbitrários para cada entrada. Faz tudo o que o formato GNU tar faz, somente melhor.
  • Manipula flags de arquivos, ACLs, nomes de caminhos arbitrários, etc. Intercâmbio Pax O formato suporta atributos chave / valor usando um formato facilmente extensível. técnica. Nome de caminho arbitrário, nomes de grupos, nomes de usuários, tamanhos de arquivo fazem parte do padrão POSIX; libarchive estende isso com suporte para flags de arquivos, ACLs e números de dispositivos arbitrários.
  • suporte ao tar GNU. Libarchive lê a maioria dos arquivos GNU tar. Se lá é a demanda, isso pode ser melhorado ainda mais. "
por 06.12.2013 / 15:30
1

O seguinte é baseado na leitura, não na experiência - eu estou apenas começando com o Freebsd, então eu não tenho quase nenhuma experiência real com ele (eu estou vindo principalmente do Linux). Peço desculpas (e humildemente solicito correção) se eu perdi algo importante e o que eu digo aqui é besteira ...

A partir da minha leitura das páginas de manual (mais recentemente a refa acima do link ) o Freebsd tar não possui o recurso (-d, --diff, --compare). Isso não é surpreendente, já que os autores do Freebsd dump / restore não parecem ter fornecido nada parecido com isso.

Eu não sei ao certo se o tar Gnu irá incorporar todos os metadados UFS como Freebsd tar é dito, e isso é uma questão importante. Mas para o meu gosto, eu nunca pode considerar um despejo para ser concluída até que eu tenha armazenado uma soma MD5 do arquivo de saída, e então comparar o arquivo de despejo contra os dados que eu supostamente despejados. Vários problemas podem fazer com que os dados descartados sejam diferentes do que está no disco. (Não apenas alterações de arquivo, mas erros de disco, erros de memória, falhas de máquina e assim por diante. Todos os que realmente aconteceram comigo.)

Na minha opinião, isso torna o Gnu tar a única opção que até agora encontrei para criar backups reais em um sistema Freebsd de ações.

Eu gostaria muito de aprender o contrário, FWIW. Eu preferiria usar os utilitários nativos pelo menos para backups de clonagem de partição e de recuperação de disco rígido. Mas se alguém não pode verificar a exatidão de um despejo, não vejo razão em me preocupar em criar um.

    
por 05.01.2014 / 11:00
1
  • O bsdtar pode ler e membros do tar vindo de outros arquivos usando a sintaxe @archive

  • O GNU tar tem a opção --delete - embora recentemente, descobri que isso pode corromper o arquivo.

por 10.11.2017 / 03:03

Tags