O nome tar é, na maioria das contas, abreviação de arquivo de fita. As “fitas” em questão seriam todas aquelas unidades de armazenamento magnético populares desde os anos 1950.

Isso sugere que o tar ferramenta pode ser um pouco velha e ultrapassada. Mas a verdade é que, ao longo dos anos e através de todas as mudanças sísmicas no mundo da TI, tar não perdeu nada de seu poder e valor.

Neste artigo, com base no conteúdo do meu Livro Linux em Ação, Vou mostrar a você os fundamentos da criação, compactação e restauração de arquivos tar. Vamos começar no início.

Este exemplo pegará todos os arquivos e diretórios dentro e abaixo do diretório de trabalho atual e construirá um arquivo que eu habilmente denominei archivename.tar.

Aqui eu uso três argumentos após o comando tar:

  • a c diz ao tar para criar um novo arquivo,
  • v define a saída da tela como detalhada para obter atualizações e
  • f aponta para o nome do arquivo que gostaria de fornecer ao arquivo.

o * é o que diz tar para incluir todos os arquivos e diretórios locais recursivamente.

$ tar cvf archivename.tar *file1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

O comando tar nunca moverá ou excluirá qualquer um dos diretórios e arquivos originais que você alimenta – ele apenas faz cópias arquivadas.

Você também deve observar que usar um ponto (.) Em vez de um asterisco

no comando anterior incluiria até mesmo arquivos ocultos (cujos nomes de arquivo começam com um ponto) no arquivo.

Se você estiver acompanhando em seu próprio computador (como definitivamente deveria), verá um novo arquivo chamado archivename.tar. A extensão de nome de arquivo .tar não é necessária, mas é sempre uma boa ideia comunicar claramente a finalidade de um arquivo de todas as maneiras possíveis. xvf Extrair seu arquivo para restaurar os arquivos é fácil: basta usar cvfao invés de

$ tar xvf archivename.tarfile1file2file3directory1directory1/morestuffdirectory1/morestuff/file100directory1/morestuff/file101

. Isso, no exemplo, salvará novas cópias dos arquivos e diretórios originais no local atual. -C Claro, você também pode fazer com que o tar envie seus arquivos extraídos para algum outro lugar usando o

$ tar xvf archivename.tar -C /home/mydata/oldfiles/

argumento, seguido pelo local de destino:

Você nem sempre desejará incluir todos os arquivos em uma árvore de diretórios em seu arquivo.

Suponha que você produziu alguns vídeos, mas atualmente eles são mantidos em diretórios junto com todos os tipos de arquivos gráficos, de áudio e de texto (contendo suas notas). Os únicos arquivos dos quais você precisa fazer backup são os videoclipes finais usando a extensão de nome de arquivo .mp4.

$ tar cvf archivename.tar *.mp4

Veja como fazer isso:

Isso é ótimo. Mas esses arquivos de vídeo são enormes. Não seria bom tornar esse arquivo um pouco menor usando compactação? z Não diga mais! Basta executar o comando anterior com o

(zip) argumento. Isso dirá ao programa gzip para compactar o arquivo. .gz Se você deseja seguir a convenção, também pode adicionar um .tar extensão além do

que já está lá. Lembre-se: clareza.

$ tar czvf archivename.tar.gz *.mp4

Veja como isso funcionaria: .tar.gz Se você tentar fazer isso em seus próprios arquivos .mp4 e, em seguida, executar ls -l no diretório que contém os novos arquivos, poderá notar que o .tar arquivo não é muito menor que o

arquivo, talvez 10% ou mais. O que há com isso? .mp4 Bem o

o formato do arquivo é compactado, então há muito menos espaço para o gzip fazer seu trabalho. .mp4 Como o tar está totalmente ciente de seu ambiente Linux, você pode usá-lo para selecionar arquivos e diretórios que residem fora do seu diretório de trabalho atual. Este exemplo adiciona todos os /home/myuser/Videos/ arquivos no

$ tar czvf archivename.tar.gz /home/myuser/Videos/*.mp4

diretório:

Como os arquivos compactados podem ficar grandes, às vezes pode fazer sentido dividi-los em vários arquivos menores, transferi-los para sua nova casa e recriar o arquivo original na outra extremidade. A ferramenta de divisão é feita para este propósito. -b Neste exemplo,

$ split -b 1G archivename.tar.gz "archivename.tar.gz.part"

diz ao Linux para dividir o arquivo archivename.tar.gz em partes de 1 GB. A operação então nomeia cada uma das partes — archivename.tar.gz.partaa, archivename.tar.gz.partab, archivename.tar.gz.partac e assim por diante:

$ cat archivename.tar.gz.part* > archivename.tar.gz

Por outro lado, você recria o arquivo lendo cada uma das partes em sequência (cat archivename.tar.gz.part *) e, em seguida, redireciona a saída para um novo arquivo chamado archivename.tar.gz:

# tar czvf - --one-file-system / /usr /var   --exclude=/home/andy/ | ssh [email protected]   "cat > /home/username/workstation-backup-Apr-10.tar.gz"

É aqui que as coisas boas começam. Vou mostrar a você como criar uma imagem de arquivo de uma instalação Linux funcional e transmiti-la para um local de armazenamento remoto – tudo com um único comando. Aqui está o comando:

Em vez de tentar explicar tudo isso imediatamente, usarei exemplos menores para explorar um pedaço de cada vez.

$ tar czvf - importantstuff/ | ssh [email protected] "cat > /home/username/myfiles.tar.gz"importantstuff/filename1importantstuff/filename2[...][email protected]'s password:

Vamos criar um arquivo do conteúdo de um diretório chamado importantstuff que é preenchido com, bem, coisas realmente importantes:

Deixe-me explicar esse exemplo. Em vez de inserir o nome do arquivo logo após os argumentos do comando (da maneira que você fez até agora), usei um travessão (czvf -).

O traço envia dados para a saída padrão. Ele permite que você empurre os detalhes do nome do arquivo de volta para o final do comando e diz ao tar para esperar o conteúdo fonte do arquivo.

Em seguida, canalizei (|) o arquivo compactado sem nome para um login ssh em um servidor remoto onde minha senha foi solicitada.

O comando entre aspas executou cat contra o fluxo de dados do arquivo, que gravou o conteúdo do fluxo em um arquivo chamado myfiles.tar.gz em meu diretório inicial no host remoto.

Uma vantagem de gerar arquivos dessa maneira é evitar a sobrecarga de uma etapa intermediária. Não há necessidade nem mesmo de salvar temporariamente uma cópia do arquivo na máquina local. Imagine fazer backup de uma instalação que preenche 110 GB de seus 128 GB de espaço disponível. Para onde iria o arquivo?

Era apenas um diretório de arquivos. Suponha que você precise fazer backup de um sistema operacional Linux ativo em uma unidade USB para que possa movê-lo para uma máquina separada e soltá-lo na unidade principal dessa máquina.

Supondo que já haja uma nova instalação da mesma versão do Linux na segunda máquina, a próxima operação de copiar / colar irá gerar uma réplica exata da primeira. ddNOTA: Isso não funcionará em uma unidade de destino que ainda não tenha um sistema de arquivos Linux instalado. Para lidar com essa situação, você precisará usar

. /dev/sdc1O próximo exemplo cria um arquivo compactado na unidade USB conhecido como

. --one-file-system o /sys/ O argumento exclui todos os dados de qualquer sistema de arquivos além do atual. Isso significa que pseudo partições como /dev/ e /usr/ não será adicionado ao arquivo. Se houver outras partições que você deseja incluir (como você fará para /var/ e

neste exemplo), então eles devem ser explicitamente adicionados. --exclude Finalmente, você pode excluir dados do sistema de arquivos atual usando o

# tar czvf /dev/sdc1/workstation-backup-Apr-10.tar.gz   --one-file-system   / /usr /var   --exclude=/home/andy/

argumento:

# tar czvf - --one-file-system / /usr /var   --exclude=/home/andy/ | ssh [email protected]   "cat > /home/username/workstation-backup-Apr-10.tar.gz"

Agora vamos voltar ao exemplo de comando de serviço completo. Usando o que você já aprendeu, arquive todos os diretórios importantes de um sistema de arquivos e copie o arquivo para uma unidade USB. Deve fazer sentido para você agora: Há muito mais vantagens de administração na forma de livros, cursos e artigos disponíveis em meubootstrap-it.com

.



Fonte