quarta-feira, 3 de outubro de 2007

O comando cpio

Para criar um backup, pode-se usar o comando cpio. O cpio recebe uma lista de arquivos a ser agrupados. A lista pode ser feita de várias maneiras, uma delas é com o comando find ou com um arquivo que contenha uma lista dos arquivos. A documentação do cpio é pouco complexa, portanto fiz um tutorial prático mostrando como esse comando é cobrado na prova de certificação da LPI.

Alguns parâmetros do comando cpio:

-i extrair backup
-o criar backup
-t mostrar uma tabela com o conteúdo do backup
-F essa opção especifica o arquivo de backup
-d cria diretórios se necessário
-c ler ou escrever informações de cabeçalho em caracteres ASCII
-v mostrar o que está fazendo em detalhes

Exemplos práticos:

Restaurando um arquivo chamando memo.ben de um arquivo cpio chamado backup.cpio:
$ cpio -iF backup.cpio memo.ben

Ilustração de um caso:

Crie um diretório chamado testes no seu diretório pessoal:
$ mkdir ~/testes
$ cd ~/testes

Crie um diretório em testes chamado exemplos:
$ mkdir exemplos
$ cd exemplos

Crie dois arquivos vazios:
$ touch arq1.txt arq2.txt

Coloque um conteúdo qualquer no arquivo arq1.txt (abaixo listei o contéudo do diretório pessoal e mandei para o arq1.txt):
$ ls ~/ > arq1.txt

Volte ao diretório ~/testes:
$ cd ~/testes

Vamos fazer um backup dos arquivos arq1.txt e arq2.txt que estão no diretório exemplos:
$ find exemplos -name arq* | cpio -o > teste.bin

Para extrair o backup faça:
$ cpio -iF teste.bin

Atenção: o comando cpio só vai extrair os arquivos caso ele tiver certeza que os arquivos do backup não sejam mais antigos que os que estão no diretório exemplos.

Gerando uma lista de arquivos que tem a extensão .old no diretório corrente como entrada para o utilitário cpio que vai criar um backup lendo ou escrevendo a informação de cabeçalho em caracteres ASCII (útil quando a máquina de origem e destino do backup são diferentes) em modo detalhado para o dispositivo de disquete:
$ find . -name “*.old” | cpio -ocBv > /dev/fd0

Restaurando do disquete todos os arquivos que possuem em seu nome a palavra “save” (subdiretórios são criados se necessário):
$ cpio -icdv “*save*” < /dev/fd0

Para listar o conteúdo de um arquivo cpio chamado cpio.bin:
$ cpio -t < cpio.bin

Vamos supor que você queira criar um arquivo com a lista dos arquivos que terão backup, use um editor de textos qualquer com os arquivos:
$ vi lista.txt
arq1.txt
arq2.txt
Salve o arquivo!

Gere o backup:
$ cpio -o < lista.txt > cpio.bin

1 comentários:

Giuseppe Caran disse...

Estou estudando para tirar a Certificação LPI e hoje já estava a umas 2 horas tentando enteder o comando cpio. Após vários testes, somente funcionou quando executei exatamente como orientou. Agora estou entendendo melhor. Valeu a dica!