Comando Linux cpio
O cpio copia arquivos de e para arquivos.
Descrição
O GNU cpio é uma ferramenta para criar e extrair arquivos, ou copiar arquivos de um lugar para outro. Ele lida com muitos formatos cpio, além de ler e gravar arquivos tar .
Os seguintes formatos de arquivo são suportados: binário , ASCII antigo, novo ASCII, CRC , binário HP-UX, ASCII antigo HP-UX, alcatrão antigo e alcatrão POSIX .1. O formato tar é fornecido para compatibilidade com o programa tar . Por padrão, o cpio cria arquivos de formato binário, para compatibilidade com programas cpio mais antigos. Ao extrair de arquivos, o cpio reconhece automaticamente que tipo de arquivo está lendo e pode ler arquivos criados em máquinas com uma ordem de bytes diferente.
Sintaxe
Sintaxe do modo de cópia de saída:
No modo de cópia, o cpio copia os arquivos em um arquivo morto. Ele lê uma lista de nomes de arquivos , um por linha, na entrada padrão e grava o arquivo na saída padrão. Uma maneira típica de gerar a lista de nomes de arquivos é com o comando find ; você deve encontrar a opção -thp para minimizar problemas com permissões em diretórios ilegíveis. Sintaxe do modo de cópia de saída:
cpio {-o | --criar} [-0acvABLV] [-C bytes ] [-H formato ] [-M mensagem ] [-O [[ usuário @] host :] archive ] [-F [[ usuário @] host :] archive ] [- arquivo = [[ usuário @] host :] arquivo ]] [--format = formato ] [--message = message ] [- null] [--reset-access-time] [--verbose] [--dot] [--append] [--block-size = blocks ] [--dereference] [--io-size = bytes ] [--rsh-command = command ] [--help] [--version] < lista de nomes [> archive ]
Sintaxe do modo de cópia de entrada:
No modo de cópia de entrada, o cpio copia arquivos de um arquivo ou lista o conteúdo do arquivo. Ele lê o arquivo da entrada padrão. Quaisquer argumentos de linha de comando que não sejam opções são padrões de shell globbing ; somente arquivos no arquivo morto cujos nomes correspondem a um ou mais desses padrões são copiados do arquivo morto. Ao contrário do shell, uma inicial ‘ . ’em um nome de arquivo corresponde a um curinga no início de um padrão e um’ / ’em um nome de arquivo pode corresponder a curingas. Se nenhum padrão for fornecido, todos os arquivos serão extraídos. Sintaxe do modo de cópia de entrada:
cpio {-i | --extract} [-bcdfmnrtsuvBSV] [-C bytes ] [-E arquivo ] [-H formato ] [-M mensagem ] [-R [ usuário ] [:.] [ Grupo ]] [-I [[ usuário @] host :] archive ] [-F [[ usuário @] host :] archive ] [--file = [[ usuário @] host :] archive ] [--make-directory] [--nonmatching] [--preserve-modification-time] [--numeric-uid-gid] [--rename] [-t | --list] [- swap-bytes] [- swap] [--dot] [- incondicional] [--verbose] [--block-size = blocks ] [--swap-halfwords] [--io-size = bytes ] [--padrão-arquivo = arquivo ] [--formato = formato ] [- proprietário = [ usuário ] [:.] [ grupo ]] [--no-preserve-owner] [--message = message ] [--force-local] [--nomes de arquivos absolutos] [--nomes de arquivos absolutos] [--sparse] [--lyly-check-crc] [--to-stdout] [--quiet] [--rsh-command = command ] [--help] [--version] [ pattern ...] [< arquivo ]
Sintaxe do modo Copy-Pass:
No modo copy-pass, o cpio copia arquivos de uma árvore de diretórios para outra, combinando as etapas de cópia e entrada sem realmente usar um arquivo. Ele lê a lista de arquivos a serem copiados da entrada padrão; o diretório no qual os copiará é fornecido como um argumento de não opção. Sintaxe do modo Copy-Pass:
cpio {-p | --passar} [-0adlmuvLV] [-R [ usuário ] [:.] [ grupo ]] [--nulo] [--reset-access-time] [--make-directory] [--link] [--quiet] [--preserve-modification-time] [--condicional] [--verbose] [--dot] [--dereference] [--owner = [ user ] [:.] [ group ]] [--no-preserve-owner] [--sparse] [--help] [--version] diretório de destino < lista de nomes
Opções
-0 , –null | Leia uma lista de nomes de arquivos terminados por um caractere nulo , em vez de uma nova linha , para que os arquivos cujos nomes contenham novas linhas possam ser arquivados. A descoberta do GNU é uma maneira de produzir uma lista de nomes de arquivos terminados em nulo. Esta opção pode ser usada nos modos de cópia e passagem de cópia. |
-a , –reset-access-time | Redefina os tempos de acesso dos arquivos depois de lê-los, para que não pareçam ter sido lidos. |
-A , –append | Anexar a um arquivo existente. Funciona apenas no modo de cópia. O archive deve ser um arquivo de disco especificado com a opção -O ou -F ( -file ). |
-b , –swap | Troque meias palavras de palavras e bytes de meias palavras nos dados. Equivalente a -sS . Esta opção pode ser usada no modo de cópia. Use esta opção para converter números inteiros de 32 bits entre máquinas big endian e little endian. |
-B | Defina o tamanho do bloco de E / S para 5120 bytes. Inicialmente, o tamanho do bloco é de 512 bytes. |
–block-size=BLOCK-SIZE | Defina o tamanho do bloco de E / S como BLOCK-SIZE * 512 bytes. |
-c | Idêntico a ‘ -H newc ‘; usa o novo formato portátil (SVR4). Se você deseja o antigo formato de arquivo portátil (ASCII), use ‘ -H odc ‘. |
-C IO-SIZE, –io-size=IO-SIZE | Defina o tamanho do bloco de E / S como bytes IO-SIZE . |
-d , –make-directory | Crie diretórios principais sempre que necessário. |
-E FILE, –pattern-file=FILE | Leia padrões adicionais especificando nomes de arquivos para extrair ou listar do FILE . As linhas de FILE são tratadas como se tivessem sido argumentos não opcionais ao cpio . Esta opção é usada no modo de cópia. |
-f, –nonmatching | Copie apenas arquivos que não correspondem a nenhum dos padrões fornecidos. |
-F, –file=archive | Arquive o nome do arquivo a ser usado em vez da entrada ou saída padrão. Para usar uma unidade de fita em outra máquina como arquivo morto, use um nome de arquivo que comece com ‘ HOSTNAME: ‘. O nome do host pode ser precedido por um nome de usuário e um ‘ @ ‘ para acessar a unidade de fita remota como esse usuário, se você tiver permissão para fazê-lo (uma entrada no arquivo ‘ ~ / .rhosts ‘ desse usuário). |
–force-local | Com -F , -I ou -O , considere o nome do arquivo morto um arquivo local, mesmo que contenha dois pontos, o que normalmente indica um nome de host remoto. |
-H FORMAT , –format = FORMAT | Use o formato de arquivo FORMAT . Os formatos válidos estão listados abaixo; os mesmos nomes também são reconhecidos em maiúsculas . O padrão no modo de cópia de entrada é detectar automaticamente o formato de arquivo morto, e no modo de cópia de impressão é ‘ bin ‘. bin : O formato binário obsoleto. odc : o antigo formato portátil (POSIX .1). newc : o novo formato portátil (SVR4), que suporta sistemas de arquivos com mais de 65536 inodes . crc : o novo formato portátil (SVR4) com uma soma de verificação adicionada. alcatrão : o antigo formato de alcatrão. ustar : O formato tar do POSIX .1. Além disso, reconhece os arquivos tar do GNU, que são semelhantes, mas não idênticos. hpbin : o formato binário obsoleto usado pelo cpio do HP-UX (que armazena os arquivos do dispositivo de maneira diferente). hpodc : o formato portátil usado pelo cpio do HP-UX (que armazena os arquivos do dispositivo de maneira diferente). |
-i , –extract | Execute no modo de cópia. (consulte ‘ Modo de cópia ‘). |
-I arquivo | Arquive o nome do arquivo a ser usado em vez da entrada padrão. Para usar uma unidade de fita em outra máquina como arquivo morto, use um nome de arquivo que comece com ‘ HOSTNAME: ‘. O nome do host pode ser precedido por um nome de usuário e um ‘ @ ‘ para acessar a unidade de fita remota como esse usuário, se você tiver permissão para fazê-lo (uma entrada no arquivo ‘ ~ / .rhosts ‘ desse usuário). |
-k | Ignorado; para compatibilidade com outras versões do cpio. |
-l , –link | Vincule arquivos em vez de copiá-los, quando possível. |
-L , –dereferência | Copie o arquivo para o qual um link simbólico aponta, em vez do próprio link simbólico. |
-m , –preserve-modification-time | Mantenha os tempos de modificação de arquivos anteriores ao criar arquivos. |
-M MENSAGEM , –mensagem = MENSAGEM | Imprima MESSAGE quando o final de um volume da mídia de backup (como uma fita ou um disquete ) for atingido, para solicitar ao usuário que insira um novo volume. Se MESSAGE contiver a sequência ‘ % d ‘, ela será substituída pelo número do volume atual (iniciando em 1). |
-n , –numeric-uid-gid | Mostre o UID e o GID numéricos em vez de convertê-los em nomes ao usar a opção ‘ –verbose ‘. |
–no-absolute-filenames | Crie todos os arquivos relativos ao diretório atual no modo de cópia de cópia, mesmo se eles tiverem um nome absoluto no arquivo morto. |
–absolute-filenames | Este é o padrão: diga ao cpio para não remover os principais componentes de nome de arquivo que contêm ‘ .. ‘ e as principais barras dos nomes de arquivo no modo de cópia. |
–no-preserve-owner | Não altere a propriedade dos arquivos; deixe-os de propriedade do usuário que os extrai. Esse é o padrão para usuários não raiz, para que os usuários do System V não inadvertidamente entreguem arquivos. Esta opção pode ser usada no modo de cópia e no modo de passagem de cópia. |
-o , –create | Execute no modo de cópia. (consulte ‘ Modo de cópia ‘). |
-O arquivo | Arquive o nome do arquivo a ser usado em vez da saída padrão. Para usar uma unidade de fita em outra máquina como arquivo morto, use um nome de arquivo que comece com ‘ HOSTNAME: ‘. O nome do host pode ser precedido por um nome de usuário e um ‘ @ ‘ para acessar a unidade de fita remota como esse usuário, se você tiver permissão para fazê-lo (uma entrada no arquivo ‘ ~ / .rhosts ‘ desse usuário). |
–only-verifique-crc | Verifique o CRC de cada arquivo no arquivo morto, ao ler um arquivo no formato CRC. Na verdade, não extraia os arquivos. |
-p , –pass-through | Execute no modo cópia-passe. (consulte ‘ modo de passagem de cópia ‘). |
–quieto | Não imprima o número de blocos copiados. |
-r , –rename | Renomeie arquivos interativamente. |
-R [ usuário ] [ :. ] [ grupo ], – proprietário [ usuário ] [ :. ] [ grupo ] | Defina a propriedade de todos os arquivos criados para o usuário e / ou grupo especificado nos modos de cópia e passagem de cópia. O usuário, o grupo ou ambos, devem estar presentes. Se o grupo for omitido, mas o ‘ : ‘ ou ‘ . Se o separador for fornecido, use o grupo de login do usuário fornecido. Somente o superusuário pode alterar a propriedade dos arquivos. |
–rsh-command = COMANDO | Notifica o cpio que deve usar COMMAND para se comunicar com dispositivos remotos. |
-s , –swap-bytes | Troque os bytes de cada meia palavra (par de bytes) nos arquivos. Esta opção pode ser usada no modo de cópia. |
-S , –swap-halfwords | Troque as meias palavras de cada palavra (4 bytes) nos arquivos. Esta opção pode ser usada no modo de cópia. |
–escasso | Grave arquivos com grandes blocos de zeros como arquivos esparsos. Esta opção é usada nos modos de cópia e passagem de cópia. |
-t , –list | Imprima um sumário da entrada. |
–to-stdout | Extraia arquivos para saída padrão. Esta opção pode ser usada no modo de cópia. |
-u , –unconditional | Substitua todos os arquivos, sem perguntar se deseja substituir os arquivos mais recentes existentes por arquivos mais antigos. |
-v , –verbose | Liste os arquivos processados ou, com ‘ -t ‘, forneça uma lista de índices no estilo ‘ ls -l ‘. Em um sumário detalhado de um arquivo ustar , os nomes de usuários e grupos no arquivo morto que não existem no sistema local são substituídos pelos nomes que correspondem localmente ao UID e GID numérico armazenados no arquivo. |
-V , –dot | Imprima um ‘ . ‘para cada arquivo processado. |
–version | Imprima o número da versão do programa cpio e saia. |
Exemplos
Ao criar um arquivo morto , o cpio pega a lista de arquivos a serem processados da entrada padrão e envia o arquivo morto para a saída padrão ou para o dispositivo definido pela opção ‘ -F ‘. Normalmente, find ou ls são usados para fornecer esta lista à entrada padrão. No exemplo a seguir, você pode ver as possibilidades de arquivar o conteúdo de um único diretório:
% ls | cpio -ov> directory.cpio
A opção ‘ -o ‘ cria o arquivo morto e a opção ‘ -v ‘ imprime os nomes dos arquivos arquivados à medida que são adicionados. Observe que as opções podem ser reunidas após um único ‘ – ‘ ou podem ser colocadas separadamente na linha de comando. O ‘ > ‘ redireciona a saída do cpio para o arquivo ‘ directory.cpio ‘.
Se você deseja arquivar uma árvore de diretórios inteira, o comando find pode fornecer a lista de arquivos ao cpio :
% encontrar . -print-profundidade | cpio -ov> tree.cpio
Isso pega todos os arquivos no diretório atual, os diretórios abaixo e os coloca no arquivo tree.cpio . Novamente, o ‘ -o ‘ cria um arquivo morto e a opção ‘ -v ‘ mostra o nome dos arquivos conforme eles são arquivados (consulte ‘ Modo de cópia ‘). Usando o ‘ . ‘na instrução find fornece mais flexibilidade ao fazer restaurações, pois salvará nomes de arquivos com um caminho relativo por um caminho absoluto e com fio. A opção ‘ -pthth ‘ força ‘ find ‘ a imprimir as entradas em um diretório antes de imprimir o próprio diretório. Isso limita os efeitos das permissões restritivas de diretório, imprimindo as entradas de diretório em um diretório antes do próprio nome do diretório.
A extração de um arquivo requer um pouco mais de reflexão, porque o cpio não criará diretórios por padrão. Outra característica é que ele não substituirá os arquivos existentes, a menos que especificado.
% cpio -iv <diretório.cpio
Isso recuperará os arquivos arquivados no arquivo directory.cpio e os colocará no diretório atual. A opção ‘ -i ‘ extrai o arquivo morto e o ‘ -v ‘ mostra os nomes dos arquivos à medida que são extraídos. Se você estiver lidando com uma árvore de diretórios arquivada, precisará usar a opção ‘ -d ‘ para criar diretórios conforme necessário, algo como:
% cpio -idv <tree.cpio
Isso pega o conteúdo do arquivo tree.cpio e o extrai para o diretório atual. Se você tentar extrair os arquivos sobre os arquivos com o mesmo nome que já existem (e tiverem o mesmo ou o tempo de modificação posterior), o cpio não extrairá o arquivo, a menos que seja solicitado pela opção -u (consulte ‘ Copiar em mode ‘).
No modo copy-pass, o cpio copia arquivos de uma árvore de diretórios para outra, combinando as etapas de cópia e entrada sem realmente usar um arquivo. Ele lê a lista de arquivos a serem copiados da entrada padrão; o diretório no qual os copiará é fornecido como um argumento sem opção (consulte ‘ Modo de passagem de cópia ‘).
% encontrar . -thp -print0 | cpio --null -pvd new-dir
O exemplo mostra a cópia dos arquivos do diretório atual e dos subdiretórios para um novo diretório chamado new-dir . Algumas novas opções são a ‘ -print0 ‘ disponível no GNU find, combinada com a opção ‘ –null ‘ do cpio . Essas duas opções atuam juntas para enviar nomes de arquivos entre find e cpio , mesmo se caracteres especiais estiverem incorporados nos nomes dos arquivos. Outra é ‘ -p ‘, que diz ao cpio para passar os arquivos encontrados para o diretório ‘ new-dir ‘.
encontrar . -print | cpio -ocv> / dev / fd0
Acima, o comando find listaria todos os arquivos e diretórios e o comando cpio copia os arquivos listados na unidade de disquete.
encontrar . -print | cpio -dumpv / home / usuários / esperança
No exemplo acima, o comando find listaria todos os arquivos e subdiretórios do diretório atual e os canalizaria para o comando cpio , que copia esses arquivos para a conta de usuário hope .
cpio -icuvd </ dev / fd0
O comando acima restauraria os arquivos novamente a partir do disquete.
Comandos relacionados
ar – Crie, modifique e extraia arquivos de arquivos.
cat – gera o conteúdo de um arquivo.
gzip – Crie, visualize o conteúdo e extraia arquivos dos arquivos zip do GNU.
ls – lista o conteúdo de um diretório ou diretórios.
setfacl – Modifique a lista de controle de acesso de um ou mais arquivos.
tar – Crie, modifique, liste o conteúdo e extraia arquivos de arquivos tar.