Eu sempre usei o GNU tar
. No entanto, todas as distribuições GNU / Linux que eu vi são enviadas bsdtar
em seus repositórios. Eu já o vi instalado por padrão em alguns, IIRC. Eu sei com certeza que o Arch GNU / Linux exige isso como parte de basedevel
(talvez base
, mas não tenho certeza), como eu já vi em PKGBUILDs.
Por que você gostaria de usar em bsdtar
vez do GNU tar
? Quais são as vantagens?
Observe que eu sou a pessoa que perguntou Quais são as principais diferenças entre a área de usuário do BSD e do GNU / Linux? .
Respostas:
O Ubuntu
bsdtar
é na verdade a implementação do tar incluídalibarchive
; e isso deve ser diferenciado do clássicobsdtar
. Algumas variantes do BSD usamlibarchive
para sua implementação tar, por exemplo, FreeBSD.GNUtar
suporta outras variantes de alcatrão e detecção automática de compactação.Como a visualização colou o anúncio no Ubuntu, existem algumas coisas específicas para
libarchive
:libarchive
é por definição uma biblioteca e diferente da clássicabsdtar
eGNUtar
dessa maneira.libarchive
não consegue ler algumas variações obscuras de tar GNU mais antigas, o mais notável foi a codificação de alguns cabeçalhos em base64, para que o arquivo tar seja ASCII limpo de 7 bits (esse foi o caso de 1.13.6-1.13.11 e alterado em 1.13.12 , esse código estava oficialmente oficialmente no alcatrão por 2 semanas)libarchive
'sbsdtar
vai ler arquivos não-tar (por exemplo, zip, ISO9660, cpio), mas bsdtar clássica não vai.Agora que saímos
libarchive
do caminho, tudo se resume ao que é suportado no clássicobsdtar
.Você pode ver as páginas do manual aqui:
Na sua pergunta original, você perguntou quais são as vantagens do clássico
bsdtar
e não tenho certeza de que realmente haja alguma. O único momento realmente importante é se você está tentando escrever scripts de shell que precisam funcionar em todos os sistemas; você precisa garantir que o que você transmitetar
seja realmente válido em todas as variantes.GNUtar
,libarchive
'Sbsdtar
, clássicosbsdtar
,star
eBusyBox
' star
são, certamente, as implementações de alcatrão que você vai correr em maior parte do tempo, mas estou certo que há outros lá fora (QNX cedo por exemplo).libarchive
/GNUtar
/star
são os mais cheios de recursos, mas em muitos aspectos eles se desviaram dos padrões originais (possivelmente para melhor).fonte
BSDTAR vs TAR e muito mais
Aqui está um benefício !!
Vou abordar 5 tópicos aqui (e sair do tópico, mas também abrangerá o que você deseja):
O bsdtar lida com arquivos esparsos melhor que o tar comum
* exemplo: imagine um arquivo esparso de 20 tb (chamado biglun) com 10 megs 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 fazê-lo - detectá-lo - tudo Os arquivos esparsos são como luns "finos" (se você fosse usá-lo para um almoço). luns "grossos" seria uma história diferente.
* voltar ao tópico:
aumentar o biglun fará com que o tar passe por todos os 10 megas, juntamente com todos os ~ 20 tb de zeros espalhados pelo lun ... levará algum tempo, presumo, e o arquivo tar será bem grande. Além disso - extraindo - eu nunca fiz uma extração de um arquivo tar de um arquivo esparso, mas pode não ser bonito; Eu posso estar errado aqui.
bsdtarring o biglun apenas processará os 10 megs de dados e criará pequenos metadados para os ~ 20tb de zeros.
Benefício? Bem, muitos deles; Eu acabei de escrever alguns acima.
É semelhante ao rsync vs cp
Pessoalmente, eu gosto de imaginar arquivos esparsos, como luns finos, e arquivos regulares, como luns espessos ...
O próximo tópico é BTRFS thin vs thick luns:
Com sistemas de arquivos como o BTRFS , luns finos são arquivos esparsos (torne-os truncados, como no documento do wiki).
dica: faça backup com bsdtar , copie com cp
luns grossos são arquivos regulares com o atributo + C (+ C, para que ele não seja COW, copie na gravação, de modo que todas as gravações permaneçam essencialmente no local a que estão alocadas, e nenhuma nova gravação ocorra nesse arquivo quando houver sobrescrições ou exclui - pesquisa COW e BTRFS ). Em vez de tornar o arquivo truncado, faça-o com "fallocate -l"
dica: faça backup com bsdtar ou tar, copie com rsync ou cp
O próximo tópico é EXT thin vs thick luns:
luns finos que são escassos
dica: faça backup com bsdtar , copie com cp
luns grossos são arquivos regulares com o atributo + C (+ C, para que ele não seja 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 ocorrerá para esse arquivo quando houver substituições ou exclui - pesquisa COW e BTRFS ). Em vez de tornar o arquivo truncado, faça-o com "fallocate -l"
dica: faça backup com bsdtar ou tar, copie com rsync ou cp
o que é um arquivo grosso vs fino
O ARTIGO VMWARE AQUI descreve zero preguiçoso versus ansioso com luns / arquivos espessos: https://communities.vmware.com/message/2199576
gorjeta
lembre-se grosso e fino não se aplica apenas a luns, também pode estar em arquivos, sistemas de arquivos zfs (compartilhamentos / volumes / luns) e tenho certeza de outras coisas (basta olhar para zfs).
fonte
Na descrição do pacote Ubuntu ( http://packages.ubuntu.com/de/lucid/bsdtar )
"O programa bsdtar possui várias vantagens em relação às implementações tar anteriores:
fonte
O seguinte é baseado na leitura, não na experiência - estou apenas começando com o Freebsd, por isso não tenho quase nenhuma experiência real com ele (eu venho principalmente do Linux). Peço desculpas (e humildemente solicito a correção) se perdi algo importante e o que digo aqui é lixo ...
Na minha leitura das páginas de manual (mais recentemente, a referência acima http://www.freebsd.org/cgi/man.cgi?query=tar&sektion=1 ), o tar do Freebsd não possui o (-d, --diff , - compare) capacidade. Isso não é surpreendente, pois os autores do dump / restore do Freebsd também não parecem fornecer nada parecido.
Não sei ao certo se o alcatrão Gnu incorporará todos os metadados do UFS, como é dito que o alcatrão Freebsd faz, e essa é uma questão importante. Mas, para o meu gosto, NUNCA posso considerar que um despejo seja concluído até que eu tenha armazenado uma soma MD5 do arquivo de saída, E ENTÃO compare o arquivo de despejo com os dados que supostamente despejei. Vários problemas podem fazer com que os dados despejados sejam diferentes do que está no disco. (Não apenas alterações de arquivo, mas erros de disco, memória, falhas na máquina e assim por diante. Tudo isso realmente aconteceu comigo.)
Na minha opinião, isso torna o Gnu tar a única opção que eu encontrei até agora para criar backups verdadeiros em um sistema Freebsd padrão.
Eu adoraria aprender de outra forma, FWIW. Eu preferiria usar os utilitários nativos pelo menos para clonagem de partição e backups de recuperação. Mas se não é possível verificar a correção de um despejo, não vejo sentido em criar um.
fonte
O bsdtar pode ler e tar membros provenientes de outros arquivos usando a
@archive
sintaxeO tar do GNU tem a
--delete
opção - embora recentemente, descobri que ele pode corromper o arquivo.fonte