tar -cf my-web-hp.tar WWW
A opção -c instrui o comando a criar um novo arquivo tar. Observe que my-web-hp.tar é o argumento da opção -f, que define qual é o arquivo a ser criado. O nome do arquivo é arbitrário, enquanto a terminação .tar é um padrão que indica tratar-se de um arquivo tar. Observe que, no caso de uma opção como esta, que requer um argumento, o argumento deve sempre seguir imediatamente a opção na linha de comando. Verifique, usando o comando ls, que o arquivo tar foi de fato criado. O argumento do comando tar é o diretório WWW, que define qual vai ser o conteúdo do arquivo tar.
Note que, curiosamente, algumas opções do comando tar não são de fato completamente opcionais. É necessário que seja usada uma opção que determine que tipo de operação o comando vai realizar: escrita, leitura, tabela de conteúdos, etc. É o caso aqui da opção c, assim como das opções x, t, r e u, como veremos mais tarde. É necessário que uma e apenas uma destas opções alternativas esteja presente a cada vez que se usa o comando.
tar -czpf WWW.tgz WWW
Em seguida, para garantir que este arquivo de backup não seja apagado ou sobrescrito acidentalmente, vamos protegê-lo contra escrita usando o comando
chmod ugo-w WWW.tgz
Com isto, você poderá ler o arquivo para recuperar seus dados em caso de necessidade, mas não poderá apagá-lo ou escrever algo em cima dele.
tar -cvf my-web-hp.tar WWW
Observe que este comando sobrescreveu o arquivo já criado anteriormente sem dar qualquer aviso. Naturalmente, isto não é grave neste caso, pois acabamos de sobrescreve-lo com exatamente o mesmo conteúdo, mas fica um aviso de cuidado ao se criar e escrever arquivos com o comando tar.
tar -tf my-web-hp.tar
É possível obter informações mais detalhadas sobre os arquivos contidos no arquivo tar combinando isto com a opção -v, que dá um resultado no estilo de ls -l:
tar -tvf my-web-hp.tar
Desta forma podemos saber que tipo de arquivos existem no tar, quais os seu nomes, a quem pertencem e qual o seu tamanho, todas elas informações muito úteis para se poder retirar dele o que se quiser.
tar -cvf ../my-web-hp.tar .
Desta vez estamos informando ao comando que o arquivo tar deve ser criado no diretório de cima e que o conteúdo será o diretório corrente, representado pelo ponto ``.''. Olhe mais uma vez os conteúdos do arquivo tar, usando a opção -t, para ver as diferenças em relação ao caso anterior.
tar -xvf ../my-web-hp.tar
Note a chave -x, que é uma instrução para extrair arquivos de dentro do arquivo tar. Observe que não há argumento de linha de comando, o que significa que todos os arquivos e diretórios existentes no tar serão extraídos. A chave -v, como sempre, faz com que o comando tar nos diga o que está fazendo.
tar -xvf ../my-web-hp.tar <nome-do-arquivo>
Em geral é necessário usar o nome completo do arquivo, ou seja, o path completo exatamente como ele aparece dentro do tar, mas em nosso caso aqui há apenas nomes simples. Se o nome for um path contendo diretórios, estes diretórios serão criados como subdiretórios do diretório corrente.
tar -rvf ../my-web-hp.tar <nome-do-arquivo>
Observe que, quando o arquivo foi extraído do tar, ele não foi apagado deste e sim simplesmente copiado. Assim, teremos agora duas cópias do arquivo que acabamos de colocar dentro tar, com o mesmo nome. Isto é possível porque, como seria típico para uma fita, o tar trata os seus conteúdos de forma simplesmente sequencial. Verifique os conteúdos do arquivo tar usando a opção -t. Ao se extrair arquivos do arquivo tar, eles serão sempre extraídos na ordem que se encontram ao longo dele. Assim, se extrairmos todos os arquivos deste tar, a segunda cópia do arquivo sempre sobrescreverá a primeira. Por outro lado, se extrairmos apenas o arquivo em questão, ficaremos com a primeira cópia. Obviamente, não é uma idéia muito boa termos vários arquivos com o mesmo nome dentro de um arquivo tar.
tar -czvf ../my-web-hp.tgz .
A opção -z instrui o tar a comprimir o conteúdo do arquivo tar que vai ser criado, usando para isto o comando gzip. A terminação .tgz é o padrão usual para arquivos tar comprimidos. Para olhar os conteúdos ou extrair arquivos de um arquivo tar comprimido, é necessário usar sempre a opção -z, instruindo desta forma o comando tar a descomprimir o conteúdo durante a leitura.
tar -cvf - . | gzip -c - >! ../my-web-hp.tgz
É necessário explicar o que está acontecendo em cada uma das partes deste comando. O comando tar está sendo usado para criar um arquivo tar, sem compressão. O argumento - da opção -f instrui o tar a enviar o resultado de sua ação para o canal padrão de saída ``stdout'', em vez de para um arquivo em disco. O comando gzip com o argumento - lê dados do canal padrão de entrada ``stdin'' e os comprime, enquanto a opção -c o instrui a enviar o resultado para stdout. Por fim, o redirecionador >! envia os dados que aparecem no stdout do gzip para o arquivo mostrado, sobrescrevendo-o se necessário. Como sempre, o sinal de pipeline | envia o stdout de um programa para o stdin do próximo.
Na tarefa anterior toda esta operação foi feita internamento pelo próprio comando tar, devido ao uso da opção -z. Verifique o conteúdo do arquivo que acabamos de sobrescrever, usando mais uma vez o tar com as opções -tzvf.
tar -C WWW -cf - . | tar -C teste -xvf -
Tome cuidado para não errar os detalhes, pois o arquivo tar que está sendo passado pela pipeline precisa ser criado em WWW e extraído em teste, não o contrário.
A opção -C instrui o tar a mudar internamente de diretório antes de criar ou ler qualquer coisa. Assim, o primeiro tar está entrando dentro de WWW para criar o arquivo tar, que está sendo enviado para stdout. O segundo tar está entrando em teste antes de ler os dados de stdin, o que é feito devido ao uso do argumento - da opção -f junto com a opção -x. Note que só colocamos a opção -v em um dos dois comandos pois, de outra forma, os outputs para a tela dos dois comandos tar que estão rodando ao mesmo tempo na pipeline se misturariam na tela, causando confusão.
Note que uso da descrição ``arquivo tar'' é um abuso de linguagem neste caso, pois o arquivo em si nunca chega a existir. O que há é um stream de dados que está sendo passado entre os dois processos, o da primeira instância do comando tar e o da segunda instância. O formato deste stream de dados é o formato de um arquivo tar, ou seja, trata-se do mesmo conteúdo byte por byte, mas não há um arquivo do filesystem envolvido nisto. Trata-se aqui de uma ferramenta muito ágil de transferência de dados entre dois diretórios ou mesmo entre dois filesystems.
Para fazer isto, basta usar como argumento da opção -f o dispositivo /dev/floppy que corresponde ao floppy. Coloque um floppy vazio no drive, pois quaisquer conteúdos que existam nele seriam perdidos, entre no diretório WWW e execute
tar -cvf /dev/floppy .
Observe que, quando usado desta forma, sem filesystem, o floppy perde a sua característica de dispositivo de acesso randômico e passa a se comportar como um dispositivo de acesso sequencial, de forma semelhante a uma fita magnética. A única diferença é que não é necessário rebobinar o floppy! Para verificar o conteúdo do floppy basta usar o comando
tar -tvf /dev/floppy
tar -czvf /dev/floppy .
Note que, ao se fazer isto, os conteúdos anteriores do floppy foram sobrescritos sem aviso e perdidos, inclusive a estrutura de filesystem, se havia alguma nele. Para listar ou extrair os conteúdos do floppy é necessário usar, mais uma ver, a opção -z, como em
tar -tzvf /dev/floppy
Observe que, como não existe estrutura de filesystem no floppy escrito desta maneira, nem nomes de arquivos envolvidos, é importante que se registre na etiqueta do floppy a natureza do seu conteúdo.
tar -cvMf /dev/floppy .
Se a sua conta contiver mais de 1.4 MB, o que é provável, o tar vai escrever o primeiro floppy até o fim e em seguida dar uma pausa e pedir para você colocar no drive o segundo volume, ou seja, o segundo disquete. Isto se repetirá a cada disquete que for necessário até que todos os dados tenham sido guardados. Não há limite para o número de disquetes que você pode usar em sequência desta maneira, exceto pela sua paciência de ficar trocando os floppies no drive.
tar -tvMf /dev/floppy
Da mesma forma que antes, os disquetes subsequentes serão solicitados pelo programa conforme se tornarem necessários. Observe que não é possível fazer um backup multi-volume usando compressão. Para conseguir combinar estas duas coisas é necessário usar um truque, como será proposto nos problemas ao final desta apostila.
Note que não estamos recomendando aqui backups em floppies como a melhor forma de preservar os dados de sua conta. A não ser que você adquira floppies de qualidade excepcional, trata-se de uma mídia muito propensa a erros e de baixa confiabilidade. É muito melhor fazer backups em ZIPs. Neles é possível simplesmente criar filesystems e copiar diretamente os arquivos, ou fazer um backup sem filesystem como descrito aqui, inclusive com vários volumes, usando o dispositivo /dev/zip.
Usando-se compressão pode-se colocar grandes quantidades de dados em um único floppy ZIP de 100 MB, trata-se de uma mídia muito mais confiável e, considerando-se o preço por unidade de armazenamento, eles podem até ser de fato efetivamente mais baratos do que floppies comuns! Num futuro próximo a melhor forma de fazer backups dos dados de sua conta será em discos óticos CDRW mas por ora, como o uso deste tipo de disco ainda é operacionalmente um pouco complexo, a melhor recomendação para backups ainda é o disco ZIP padrão de 100 MB.