cpio versus tar e cp

cpio versus tar e cp

Acabei de aprender que o cpio tem três modos: copy-out, copy-in e pass-through.

Eu queria saber quais são as vantagens e desvantagens do cpio nos modos copy-out e copy-in em relação ao tar. Quando é melhor usar cpio e quando usar tar?

Pergunta semelhante para cpio no modo pass-through versus cp.

Obrigado e cumprimentos!

Responder1

Esta é uma visão geral extremamente genérica:

O CPIO faz um trabalho melhor de duplicação de um sistema de arquivos, incluindo a realização de backups. Ele preserva coisas como hardlinks, fifos e outros recursos de arquivo não padrão. A maioria das implementações do CPIO faz tudo o que o TAR faz, incluindo leitura e gravação de arquivos .tar. O CPIO geralmente leva uma lista de arquivos da entrada padrão para o arquivo; isso torna muito fácil canalizar uma lista de outra coisa (como find).

A passagem CPIO é muito útil se você tiver uma lista muito longa de arquivos que deseja copiar do diretório A para o diretório B. (Por exemplo, você pode usar findpara localizar todos os arquivos que foram alterados nos últimos 2 anos em seu sistema)

O TAR faz um trabalho melhor simplesmente despejando todos os seus arquivos padrão de/para uma fita (ou arquivo compactado). É um pouco mais simples de usar (para as tarefas mais comuns). Ele atende facilmente às demandas simples de backup da maioria das pessoas; e grande parte de sua popularidade vem desse fato.

E agora as letras miúdas. Existem várias versões e implementações diferentes de CPIO e TAR. Cada um possui recursos diferentes e alguns possuem opções de linha de comando diferentes. Há coisas que cada um pode fazer onde o outro não pode; se você estiver limitado por um, tente o outro. Todo mundo tem um favorito e 99% das vezes qualquer um deles realizará a tarefa.

Responder2

No redhat AE 3, descobri que o cpio tinha uma limitação de tamanho de 2 GBytes em um fluxo de saída. No entanto, o tar não tinha essa limitação.

Outros sistemas podem ter limitações diferentes.

Responder3

Entendo pelos comentários e outros antecedentes que cpiosão menos onipresentes agora e inconsistentes entre as versões. Mas cpiotem uma vantagem que recentemente achei inestimável ao lidar com um grande número de arquivos tar corrompidos. Ele não para no primeiro erro em um arquivo tar, mas tenta ignorar dados incorretos e extrair o máximo possível. Por exemplo,

tar xf ./sample.corrupt.tar

irá imprimir

tar: Skipping to next header
tar: Exiting with failure status due to previous errors

após o primeiro erro encontrado, enquanto

cpio -F ./sample.corrupt.tar -i -v

imprimirá os arquivos extraídos e para cada erro imprimirá:

cpio: invalid header: checksum error
cpio: warning: skipped 6 bytes of junk

cpio: invalid header: checksum error
cpio: warning: skipped 2 bytes of junk

etc...

O formato tar espera que cada cabeçalho do arquivo esteja alinhado em um limite 512, mas se a corrupção desalinhar os cabeçalhos, cpiofaça o melhor esforço para extrair o máximo possível

Responder4

Não vejo razão para usar o cpio por qualquer motivo que não seja copiar arquivos RPM abertos, viadisrpmourpm2cpio, mas pode haver casos em que cpio é preferível a tar.

História e popularidade

Ambosalcatrãoecpiosão formatos de arquivo concorrentes que foram introduzidos emVersão 7 Unixem 1979 e depois incluído emPOSIX.1-1988, embora apenas tar tenha permanecido no próximo padrão, POSIX.1-20011.

O formato de arquivo do Cpio mudou diversas vezes e não permaneceu totalmente compatível entre as versões. Por exemplo, agora existe uma representação codificada em ASCII de dados de informações de arquivos binários.

O Tar é mais conhecido universalmente, tornou-se mais versátil ao longo dos anos e tem maior probabilidade de ser suportado em um determinado sistema. O Cpio ainda é usado em algumas áreas, como oPacote Red Hatformato (RPM), emboraRPM v5(que é reconhecidamente obscuro) usaxarem vez de cpio.

Ambos vivem na maioria dos sistemas do tipo Unix, embora o tar seja mais comum. Aqui estãoEstatísticas de instalação do Debian:

#rank  name    inst    vote    old  recent  no-files  (maintainer)
   13   tar  189206  172133   3707   13298        68  (Bdale Garbee)
   61  cpio  189028   71664  96346   20920        98  (Anibal Monsalve Salazar)

Modos

Copiar: Isto é para criação de arquivo, semelhante atar -pc

Cópia: Isto é para extração de arquivo, semelhante atar -px

Atravessar: Isso é basicamente ambos os itens acima, semelhantes, tar -pc … |tar -pxmas em um único comando (e, portanto, microscopicamente mais rápido). É semelhante ao cp -pdr, embora cpio e (especialmente) tar tenham mais capacidade de personalização. Considere também rsync -ao , que as pessoas muitas vezes esquecem, já que é mais comumente usado em uma conexão de rede.

Não comparei o desempenho deles, mas espero que sejam bastante semelhantes em CPU, memória e tamanho de arquivo (após compactação).

informação relacionada