Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
103.3 Lição 2
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 103: Comandos GNU e Unix
  2. 103.3 Gerenciamento básico de arquivos
  3. 103.3 Lição 2

103.3 Lição 2

Certificação:

LPIC-1

Versão:

5.0

Tópico:

103 Comandos GNU e Unix

Objetivo:

103.3 Gerenciamento básico de arquivos

Lição:

2 de 2

Introdução

Como encontrar arquivos

Conforme você usa sua máquina, os arquivos vão aumentando progressivamente em número e tamanho. Às vezes, é difícil localizar um arquivo específico. Felizmente, o Linux inclui o find para pesquisar e localizar arquivos rapidamente. O find usa a seguinte sintaxe:

find STARTING_PATH OPTIONS EXPRESSION
STARTING_PATH

define o diretório em que a pesquisa se inicia.

OPTIONS

controla o comportamento e adiciona critérios específicos para otimizar o processo de busca.

EXPRESSION

define os termos da pesquisa.

$ find . -name "myfile.txt"
./myfile.txt

O caminho inicial, neste caso, é o diretório atual. A opção -name especifica que a pesquisa é baseada no nome do arquivo. myfile.txt é o nome do arquivo a ser pesquisado. Ao usar globbing de arquivo, inclua sempre a expressão entre aspas:

$ find /home/frank -name "*.png"
/home/frank/Pictures/logo.png
/home/frank/screenshot.png

Este comando busca por todos os arquivos que terminam com .png, começando no diretório /home/frank/ e abaixo dele. Se você não entendeu o uso do asterisco (*), ele foi abordado na lição anterior.

Usando critérios para acelerar a pesquisa

Use find para localizar arquivos com base em tipo, tamanho ou hora. Se especificarmos uma ou mais opções, os resultados desejados são obtidos em menos tempo.

As opções para localizar arquivos com base no tipo incluem:

-type f

busca por arquivos.

-type d

busca por diretórios.

-type l

busca por links simbólicos.

$ find . -type d -name "example"

Este comando procura por todos os diretórios, no diretório atual e abaixo dele, que tenham o nome example.

Dentre os outros critérios que podem ser usados com find, temos:

-name

pesquisa com base no nome fornecido.

-iname

pesquisa com base no nome, desconsiderando maiúsculas e minúsculas (ou seja, o caso de teste myFile é semelhante a MYFILE).

-not

retorna os resultados que não correspondem ao caso de teste.

-maxdepth N

pesquisa no diretório atual, além dos subdiretórios até N níveis de profundidade.

Localizando arquivos por hora de modificação

find também permite filtrar uma hierarquia de diretórios com base em quando o arquivo foi modificado:

$ sudo find / -name "*.conf" -mtime 7
/etc/logrotate.conf

Este comando procura por todos os arquivos em todo o sistema de arquivos (o caminho inicial é o diretório raiz, ou seja, /) que terminam com os caracteres .conf e que foram modificados nos últimos sete dias. Este comando exige privilégios elevados para acessar diretórios na base da estrutura de diretórios do sistema, daí o uso de sudo neste caso. O argumento passado para mtime representa o número de dias desde a última modificação do arquivo.

Localizando arquivos por tamanho

O find também pode localizar arquivos por tamanho. Por exemplo, se quisermos encontrar arquivos maiores que 2G em /var:

$ sudo find /var -size +2G
/var/lib/libvirt/images/debian10.qcow2
/var/lib/libvirt/images/rhel8.qcow2

A opção -size exibe arquivos de tamanhos correspondentes ao argumento passado. Eis alguns exemplos de argumentos:

-size 100b

arquivos com exatamente 100 bytes.

-size +100k

arquivos maiores que 100 kilobytes.

-size -20M

arquivos menores que 20 megabytes.

-size +2G

arquivos maiores que 2 gigabytes.

Note

Para encontrar arquivos vazios, podemos usar: find . -size 0b  ou  find . -empty.

O que fazer com os resultados

Uma vez que a pesquisa é feita, é possível realizar uma ação no conjunto de resultados usando -exec:

$ find . -name "*.conf" -exec chmod 644 '{}' \;

Esse comando filtra todos os objetos no diretório atual (.) e abaixo dele para nomes de arquivo terminando com .conf e em seguida executa o comando chmod 644 para modificar as permissões de arquivo nos resultados.

Por enquanto, não se preocupe com o significado de '{}' \;, pois isso será discutido mais adiante.

Usando o grep para filtrar por arquivos com base no conteúdo

grep é usado para buscar pela ocorrência de uma palavra-chave.

Considere uma situação na qual precisamos encontrar arquivos com base no conteúdo:

$ find . -type f -exec grep "lpi" '{}' \; -print
./.bash_history
Alpine/M
helping/M

Esse comando busca, na hierarquia de diretórios atual (.), por objetos que são arquivos (-type f) e em seguida executa o comando grep "lpi" para cada arquivo que satisfaça as condições. Os arquivos que atendem a essas condições são impressos na tela (-print). As chaves ({}) servem para reservar o espaço para os resultados encontrados por find. As {} são postas entre aspas simples (') para evitar passar arquivos com nomes contendo caracteres especiais para o grep. O comando -exec é concluído com um ponto e vírgula (;), que deve ser escapado (\;) para não ser interpretado pelo shell.

A opção -delete, se colocada no final de uma expressão, excluiria todos os arquivos correspondentes à descrição. Esta opção deve ser usada quando você tiver certeza de que os resultados correspondem apenas aos arquivos que deseja excluir.

No exemplo abaixo, find localiza todos os arquivos na hierarquia começando no diretório atual e, em seguida, exclui todos os arquivos que terminam com os caracteres .bak:

$ find . -name "*.bak" -delete

Arquivos de pacote

O comando tar (Arquivamento e compactação)

O comando tar, abreviação de “tape archive(r)”, é usado para criar arquivos tar convertendo um grupo de arquivos em um pacote. Os arquivos de pacote são úteis para mover ou fazer backup de um grupo de arquivos facilmente. Pense no tar como uma ferramenta que cria uma cola na qual os arquivos podem ser grudados, agrupados e facilmente movidos.

O tar também tem a capacidade de extrair arquivos tar, exibir uma lista dos arquivos incluídos no pacote e adicionar mais arquivos a um pacote existente.

A sintaxe do comando tar é a seguinte:

tar [OPERATION_AND_OPTIONS] [ARCHIVE_NAME] [FILE_NAME(S)]
OPERATION

Somente um argumento de operação é permitido e exigido. As operações mais frequentemente usadas são:

--create (-c)

Cria um novo arquivo tar.

--extract (-x)

Extrai o pacote inteiro ou um ou mais arquivos de um pacote.

--list (-t)

Exibe uma lista dos arquivos incluídos no pacote.

OPTIONS

As opções usadas com mais frequência são:

--verbose (-v)

Mostra os arquivos que estão sendo processados pelo comando tar.

--file=archive=name (-f archive-name)

Especifica o nome de arquivo do pacote.

ARCHIVE_NAME

O nome do arquivo de pacote.

FILE_NAME(S)

Uma lista separada por espaços com os nomes de arquivos a serem extraídos. Se não estiver presente, o pacote inteiro é extraído.

Criando um arquivo de pacote

Digamos que temos um diretório chamado stuff no diretório atual e queremos salvá-lo em um arquivo chamado archive.tar. Executaríamos para isso o seguinte comando:

$ tar -cvf archive.tar stuff
stuff/
stuff/service.conf

Eis o que essas opções significam de fato:

-c

Cria um arquivo de pacote.

-v

Exibe o progresso no terminal enquanto o arquivo de pacote é criado. Também chamado de modo “verboso”. O -v sempre é opcional nesses comandos, mas é útil.

-f

Permite especificar o nome de arquivo do pacote.

Em geral, para arquivar um único diretório ou um único arquivo no Linux, usamos:

tar -cvf NAME-OF-ARCHIVE.tar /PATH/TO/DIRECTORY-OR-FILE
Note

O tar funciona de maneira recursiva. Ele realiza a ação solicitada em todos os diretórios subsequentes dentro do diretório especificado.

Para empacotar diversos diretórios de uma vez só, listamos todos eles delimitando-os por um espaço na seção /PATH/TO/DIRECTORY-OR-FILE:

$ tar -cvf archive.tar stuff1 stuff2

Isso cria um arquivo de pacote com stuff1 e stuff2 em archive.tar

Extraindo um pacote

Podemos extrair um arquivo de pacote usando o tar:

$ tar -xvf archive.tar
stuff/
stuff/service.conf

Isso extrai o conteúdo de archive.tar para o diretório atual.

Este comando é igual ao comando de criação de pacotes usado acima, exceto porque a opção -x substitui a opção -c.

Para extrair o conteúdo do pacote para um diretório específico, usamos -C:

$ tar -xvf archive.tar -C /tmp

Isso extrai o conteúdo de archive.tar para o diretório /tmp.

$ ls /tmp
stuff

Compactando com o tar

O comando tar do GNU incluído nas distribuições Linux pode criar um arquivo .tar e, em seguida, compactá-lo com a compactação gzip ou bzip2 em um único comando:

$ tar -czvf name-of-archive.tar.gz stuff

Este comando criaria um arquivo compactado usando o algoritmo gzip (-z).

Embora a compressão gzip seja mais freqüentemente usada para criar arquivos .tar.gz ou .tgz, o tar também suporta a compressão bzip2. Isso permite a criação de arquivos compactados bzip2, geralmente chamados de arquivos .tar.bz2, .tar.bz ou .tbz.

Para isso, substituímos -z, de gzip, por -j, de bzip2:

$ tar -cjvf name-of-archive.tar.bz stuff

Para descompactar o arquivo, substituímos -c por -x, onde x significa “extract”:

$ tar -xzvf archive.tar.gz

O gzip é mais rápido, mas geralmente compacta um pouco menos, de modo que o arquivo obtido é um pouco maior. O bzip2 é mais lento, mas comprime um pouco mais, então o arquivo fica um pouco menor. Em geral, porém, gzip e bzip2 são praticamente a mesma coisa; ambos funcionam de forma semelhante.

Outra alternativa seria aplicar a compressão gzip ou bzip2 usando o comando gzip para as compressões gzip e bzip para as compressões bzip. Por exemplo, para aplicar a compactação gzip, use:

gzip FILE-TO-COMPRESS
gzip

cria o arquivo compactado com o mesmo nome, mas com a terminação .gz.

gzip

remove os arquivos originais após criar o arquivo compactado.

O comando bzip2 funciona de maneira semelhante.

Para descompactar os arquivos usamos gunzip ou bunzip2, dependendo do algoritmo usado para compactá-los.

O comando cpio

cpio significa “copy in, copy out”. É usado para processar arquivo de pacote como os arquivos *.cpio ou *.tar.

O cpio executa as seguintes operações:

  • Copiar arquivos para um pacote.

  • Extrair arquivos de um pacote.

Ele usa a lista de arquivos da entrada padrão (principalmente a saída de ls).

Para criar um arquivo cpio, usamos:

$ ls | cpio -o > archive.cpio

A opção -o instrui o cpio a criar uma saída. Neste caso, o arquivo de saída criado é archive.cpio. O comando ls lista o conteúdo do diretório atual que será empacotado.

Para extrair o arquivo de pacote, usamos:

$ cpio -id < archive.cpio

A opção -i é usada para realizar a extração. A opção -d cria a pasta de destino. O caractere < representa a entrada padrão. O arquivo de entrada a ser extraído é archive.cpio.

O comando dd

O dd copia dados de um local para outro. A sintaxe de linha de comando de dd difere de muitos outros programas Unix, pois ele usa a sintaxe option = value para as opções de linha de comando ao invés dos formatos padrão GNU -option value ou --option=value:

$ dd if=oldfile of=newfile

Este comando copia o conteúdo de oldfile para newfile, onde if= é o arquivo de entrada e of= refere-se ao arquivo de saída.

Note

O comando dd normalmente não exibe nada na tela até que o comando seja concluído. Ao fornecer a opção status=progress, o console exibe o andamento do trabalho realizado pelo comando. Por exemplo: dd status=progress if=oldfile of=newfile.

O dd também é usado para alterar dados para maiúsculas/minúsculas ou para escrever diretamente em dispositivos de bloco como /dev/sdb:

$ dd if=oldfile of=newfile conv=ucase

Esse comando copiaria todo o conteúdo de oldfile para newfile e colocaria todo o texto em maiúsculas.

O comando a seguir faria backup do disco rígido inteiro localizado em /dev/sda para um arquivo de nome backup.dd:

$ dd if=/dev/sda of=backup.dd bs=4096

Exercícios Guiados

  1. Considere a listagem a seguir:

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Que tipo de arquivos esse comando produziria?

    • A busca começaria em qual diretório?

  2. Um usuário deseja compactar sua pasta de backup. Ele usa o seguinte comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Qual opção está faltando para compactar o backup usando o algoritmo gzip?

Exercícios Exploratórios

  1. O administrador do sistema precisa realizar verificações regulares para remover arquivos volumosos. Esses arquivos volumosos estão localizados em /var e terminam com uma extensão .backup.

    • Escreva o comando, usando find, para localizar esses arquivos:

    • Uma análise do tamanhos desses arquivos revela que eles variam de 100M a 1000M. Complete o comando anterior com esta nova informação para poder localizar os arquivos de backup variando de 100M a 1000M:

    • Finalmente, complete este comando com a ação delete para remover esses arquivos:

  2. No diretório /var, existem quatro arquivos de backup:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Usando o tar, especifique o comando usado para criar um arquivo de pacote com o nome db-first-quarter-2018.backup.tar:

    • Usando o tar, especifique o comando usado para criar o arquivo de pacote e compactá-lo usando o gzip. Note que o nome do arquivo resultante deve terminar com .gz:

Resumo

Nesta seção, você aprendeu:

  • Como encontrar arquivos com find.

  • Como adicionar critérios de busca com base em hora, tipo de arquivo e tamanho fornecendo argumentos ao find.

  • O que fazer com os resultados.

  • Como arquivar, compactar e descompactar arquivos usando tar.

  • Processamento de arquivos de pacote com cpio.

  • Cópia de arquivos com dd.

Respostas aos Exercícios Guiados

  1. Considere a listagem a seguir:

    $ find /home/frank/Documents/ -type d
    /home/frank/Documents/
    /home/frank/Documents/animal
    /home/frank/Documents/animal/domestic
    /home/frank/Documents/animal/wild
    • Que tipo de arquivos esse comando produziria?

      Diretórios.

    • A busca começaria em qual diretório?

      /home/frank/Documents

  2. Um usuário deseja compactar sua pasta de backup. Ele usa o seguinte comando:

    $ tar cvf /home/frank/backup.tar.gz /home/frank/dir1

    Qual opção está faltando para compactar o backup usando o algoritmo gzip?

    A opção -z.

Respostas aos Exercícios Exploratórios

  1. O administrador do sistema precisa realizar verificações regulares para remover arquivos volumosos. Esses arquivos volumosos estão localizados em /var e terminam com uma extensão .backup.

    • Escreva o comando, usando find, para localizar esses arquivos:

      $ find /var -name *.backup
    • Uma análise do tamanho desses arquivos revela que eles variam de 100M a 1G. Complete o comando anterior com esta nova informação para poder localizar os arquivos de backup variando de 100M a 1G:

      $ find /var -name *.backup -size +100M -size -1000M
    • Finalmente, complete este comando com a ação delete para remover esses arquivos:

      $ find /var -name *.backup -size +100M -size -1000M -delete
  2. No diretório /var, existem quatro arquivos de backup:

    db-jan-2018.backup
    db-feb-2018.backup
    db-march-2018.backup
    db-apr-2018.backup
    • Usando o tar, especifique o comando usado para criar um arquivo de pacote com o nome db-first-quarter-2018.backup.tar:

      $ tar -cvf db-first-quarter-2018.backup.tar db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup
    • Usando o tar, especifique o comando usado para criar o arquivo de pacote e compactá-lo usando o gzip. Note que o nome do arquivo resultante deve terminar com .gz:

      $ tar -zcvf db-first-quarter-2018.backup.tar.gz db-jan-2018.backup db-feb-2018.backup db-march-2018.backup db-apr-2018.backup

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

103.4 Fluxos, pipes (canalização) e redirecionamentos de saída (103.4 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.