Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2024

ProgramaçãoLinguagens de programação
Código
fg086257
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Pleno I - Desenvolvimento e Análise de Produtos de Previsão Numérica de Tempo e Dados Ambientais
Imagem associada para resolução da questãoConsiderando o Shell script descrito acima, e que não existe nenhum problema de conexão entre a máquina em que ele está sendo executado (máquina local) e a lobo.fauna.br, analise os itens a seguir:I. O Shell script irá transferir para a máquina lobo.fauna.br todos os arquivos que estão no home do usuário que possuem a extensão “.ctl”.II. O arquivo transferido para a máquina lobo.fauna.br, por exemplo no dia 5, irá sobrescrever ao que foi transferido no dia 5 do mês anterior.III. Os arquivos que estão em pastas distintas na máquina local também ficarão em pastas distintas ao extrair um arquivo “.tgz” que foi transferido para a lobo.fauna.br.Está correto o que se afirma em:
  1. AII, apenas.
  2. BIII, apenas.
  3. CI e II, apenas.
  4. DII e III, apenas.
  5. EI, II e III.
Revelar gabarito e comentário

GabaritoD — II e III, apenas.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Shell Script: backup com tar, gzip e scp

Gabarito: letra D. O script compacta os arquivos .ctl do home do usuário em um arquivo .tgz nomeado com o dia do mês, transfere via scp para a máquina remota e, ao extrair, os arquivos são restaurados em suas pastas originais. O item II está correto porque o arquivo do dia 5 sobrescreve o do dia 5 do mês anterior (mesmo nome), e o item III está correto porque o tar preserva a estrutura de diretórios. O item I está incorreto porque o script não transfere os arquivos .ctl individualmente, mas sim um arquivo compactado contendo todos eles.

O script em questão utiliza comandos típicos de shell script em sistemas Unix/Linux para realizar um backup. Vamos entender cada parte:

  1. tar -czf backup_$(date +%d).tgz *.ctl: Este comando cria um arquivo compactado (.tgz) contendo todos os arquivos com extensão .ctl do diretório atual (home do usuário). O nome do arquivo inclui o dia do mês (por exemplo, backup_05.tgz). A opção -c cria um novo arquivo, -z compacta com gzip, e -f especifica o nome do arquivo.

  1. scp backup_$(date +%d).tgz lobo.fauna.br:~: Este comando copia o arquivo compactado para o diretório home do usuário na máquina remota lobo.fauna.br, utilizando o protocolo scp (secure copy).

  1. ssh lobo.fauna.br 'tar -xzf backup_$(date +%d).tgz': Este comando executa remotamente a extração do arquivo compactado na máquina remota. A opção -x extrai os arquivos, -z descompacta com gzip, e -f especifica o nome do arquivo.

O comando tar é uma ferramenta de arquivamento que, por padrão, preserva a estrutura de diretórios dos arquivos que estão sendo compactados. Isso significa que, ao extrair o arquivo .tgz, os arquivos são restaurados em suas pastas originais, mantendo a hierarquia de diretórios. Essa é a base para o item III estar correto.

O item II está correto porque o nome do arquivo gerado inclui apenas o dia do mês (por exemplo, backup_05.tgz). Se o script for executado no dia 5 de dois meses diferentes, o arquivo gerado terá o mesmo nome (backup_05.tgz). Ao transferir via scp para a máquina remota, o arquivo mais recente sobrescreverá o anterior, pois ambos têm o mesmo nome no mesmo diretório.

O item I está incorreto porque o script não transfere os arquivos .ctl individualmente. Em vez disso, ele cria um arquivo compactado contendo todos os arquivos .ctl e transfere apenas esse arquivo compactado. Portanto, a afirmação de que "irá transferir para a máquina lobo.fauna.br todos os arquivos que estão no home do usuário que possuem a extensão '.ctl'" é imprecisa, pois o que é transferido é o arquivo .tgz, não os arquivos .ctl em si.

NÃO CAIA NESSA!

A banca tenta confundir o candidato ao afirmar que o script transfere os arquivos .ctl individualmente. Na verdade, o script compacta todos os arquivos .ctl em um único arquivo .tgz e transfere apenas esse arquivo compactado. O candidato que não conhece o comportamento do tar pode cair nessa armadilha.

PEGA ESSA DICA!

Para resolver questões de shell script, é essencial conhecer o comportamento dos comandos tar, scp e ssh. O tar preserva a estrutura de diretórios, o scp copia arquivos de forma segura e o ssh executa comandos remotamente. Lembre-se de que o tar com a opção -c cria um arquivo, -z compacta com gzip, -x extrai e -f especifica o nome do arquivo.

  1. 1tar -czf backup_$(date +%d).tgz *.ctl
  2. 2scp backup_$(date +%d).tgz lobo.fauna.br:~
  3. 3ssh lobo.fauna.br 'tar -xzf backup_$(date +%d).tgz'
LEVEL · soulevel.com.br

Item I — ❌ Incorreto

A afirmação diz que o script transferirá para a máquina remota todos os arquivos .ctl do home do usuário. Isso é incorreto porque o script não transfere os arquivos .ctl individualmente. Ele primeiro compacta todos os arquivos .ctl em um único arquivo .tgz e depois transfere apenas esse arquivo compactado via scp. Portanto, o que é transferido é o arquivo compactado, não os arquivos .ctl em si.

Item II — ✅ Correto

A afirmação diz que o arquivo transferido no dia 5 irá sobrescrever o que foi transferido no dia 5 do mês anterior. Isso é correto porque o nome do arquivo gerado inclui apenas o dia do mês (por exemplo, backup_05.tgz). Se o script for executado no dia 5 de dois meses diferentes, o arquivo gerado terá o mesmo nome. Ao transferir via scp para o mesmo diretório na máquina remota, o arquivo mais recente sobrescreverá o anterior, pois ambos têm o mesmo nome.

Item III — ✅ Correto

A afirmação diz que os arquivos que estão em pastas distintas na máquina local também ficarão em pastas distintas ao extrair um arquivo .tgz que foi transferido para a máquina remota. Isso é correto porque o comando tar preserva a estrutura de diretórios dos arquivos que estão sendo compactados. Ao extrair o arquivo .tgz, os arquivos são restaurados em suas pastas originais, mantendo a hierarquia de diretórios.

Gabarito: letra D — corretos os itens II e III.

Link permanente: /questoes/fg086257