Recebi uma distribuição de software Unix como um arquivo cpio compactado. Qual é o melhor comando para extrair os arquivos?
Responder1
gzip -cd foo.cpio.gz | cpio -idmv
- i: extrair (entrada)
- d: cria diretórios
- m: preserva mtime
- v: detalhado
Responder2
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
Embora esta seja uma pergunta antiga, ela aparece no Google, então pensei em atualizá-la. Concordo com a resposta aceita em geral, mas você deve adicionar "--no-absolute-filenames", a menos que pretenda substituir arquivos importantes do sistema em sua máquina. Além disso, pessoalmente, prefiro “zcat” a “gzip -cd” ou “gunzip -c”.
Finalmente, observe que você precisa executar o cpio como root (por exemplo, sudo) se estiver extraindo um sistema de arquivos raiz que contém nós de dispositivos.
Responder3
Por exemplo, para extrair o conteúdo arquivado de /etc/httpd/ para o diretório atual, criando subdiretórios ./etc/httpd/
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
A resposta aceita e a de Matt foram úteis para mim, mas fiquei perplexo por um tempo por causa de três detalhes:
- O padrão correspondente precisa ser citado para funcionar como padrão :P
- A opção
--no-absolute-filenames
deveprecedero padrão na linha de comando - Como essa opção remove o início
/
dos nomes de arquivos, o padrão correspondente também deve omitir o início/
Responder4
Esta página da Wikipedia emcpio
tem algumas notas boas.
Para mais detalhes, consulte ocpio
manual.
Um link da mesma página da Wikipediadiscute comparação com tar
arquivos.
E aqui está um exemplo deusando cpio
com o tar
formato.