Olá, Bruno!
O comportamento que você descreveu acontece porque, no Linux, existe uma diferença entre onde o script está guardado e de onde o comando é executado.
O Caminho do Arquivo vs. O Comando de Criação
Quando você define um diretório no seu script, é preciso garantir que o comando de compactação (geralmente o tar) esteja realmente usando essa variável ou caminho completo para o destino do arquivo final.
Se o backup está caindo na pasta /home/bruga (onde o script reside), as causas mais comuns são:
1. Variável de Destino não Utilizada
Muitas vezes definimos uma variável no início do script, mas na hora de escrever a linha do comando tar, esquecemos de chamá-la.
Exemplo do que pode estar ocorrendo:
# Você definiu isso:
DIRETORIO_DESTINO="/home/bruga/Documentos/devops"
# Mas o comando pode estar assim:
tar -czf backup_projeto.tar.gz /home/bruga/projeto
No exemplo acima, como não foi passado o caminho completo antes do nome do arquivo backup_projeto.tar.gz, o Linux o cria exatamente na pasta onde você deu o comando ./backup.sh.
2. O Uso do Caminho Relativo
Se dentro do script você apenas escreveu Documentos/devops sem a barra inicial (/), o sistema tentará encontrar essa pasta a partir de onde você está no terminal. Se a pasta não for encontrada ou o comando não apontar corretamente para ela, o padrão é salvar no diretório atual.
Como Corrigir
Para garantir que o arquivo vá para o lugar certo, o comando dentro do seu backup.sh deve seguir este formato:
#!/bin/bash
DESTINO="/home/bruga/Documentos/devops"
ORIGEM="/home/bruga/projeto_para_backup"
DATA=$(date +%Y-%m-%d)
# O segredo está aqui: o caminho do destino vem antes do nome do arquivo
tar -czf $DESTINO/backup_$DATA.tar.gz $ORIGEM
Pontos Importantes:
- Verifique se a pasta existe: O script não cria a pasta de destino sozinho. Use o comando
mkdir -p /home/bruga/Documentos/devops antes de rodar o script para ter certeza de que o local existe. - Caminhos absolutos: Sempre que possível, use caminhos que começam com
/. Isso evita que o script se perca se você o executar de pastas diferentes.
Não há uma regra automática que force o backup a ficar na raiz só porque o script está lá. O que manda é o que está escrito após o parâmetro -f (file) do seu comando de compactação.
Dê uma olhadinha no seu código e veja se o caminho do destino está presente na linha do tar.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!