1
resposta

Erro no script bash do arquivo backup.sh

Na gravação da aula do professor ele usou o seguinte script no bash:

#! /bin/bash

diretorio_backup="/home/trevor/Documents/devops"
nome_arquivo="backup_$(date +%Y%m%d_%H%M%S).tar.gz"
tar -czf "$nome_arquivo" "diretorio_backup"
echo "Backup concluído em $nome_arquivo"

E ao tentar executá-lo aparece um erro:

@LAB:~/Documents/bash_scripts$ bash backup.sh
tar: diretorio_backup: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors
Backup concluído em backup_20251018_160545.tar.gz

Pelo que pesquisei (pois não tem essa explicação lá na plataforma) o erro se dá pela falta do "$" no "diretorio_backup". Porém, o script que foi executado pelo professor na gravação foi exatamente esse. Minha dúvida é, o script foi corrigido pelo professor fora da gravação?

Consegui executar corretamente o script após alterar para "$diretorio_backup".

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
1 resposta

Olá!

Sua análise do problema é impecável! Você identificou o erro corretamente, o que demonstra um excelente olho para detalhes em scripting Bash.

O Motivo do Erro
O problema está, de fato, na linha do comando tar:

Script Original (com erro):

tar -czf "$nome_arquivo" "diretorio_backup"

Quando você coloca "diretorio_backup" entre aspas, o comando tar não o interpreta como uma variável, mas sim como uma string literal (ou seja, um nome de arquivo ou diretório chamado exatamente diretorio_backup).

O Bash, então, procura por um diretório ou arquivo chamado "diretorio_backup" no seu sistema e, como não o encontra, retorna o erro: tar: diretorio_backup: Cannot stat: No such file or directory.

A Correção Correta
A forma correta de fazer o Bash reconhecer o valor armazenado na variável é adicionar o cifrão ($):

Script Corrigido:

tar -czf "$nome_arquivo" "$diretorio_backup"