1
resposta

Duvida sobre o script backup.sh

Bom dia pessoal!
Estou assistindo a aula DevOps: explorando conceitos, comandos e scripts no Linux CLI, onde criei o script backup.sh que foi salvo na pasta /home/bruga de forma automatica.
No script eu apontei o diretorio para salvar o backup /home/bruga/Documentos/devops, porém quando executo o backup.sh, o bakcup gerado é salvo no diretorio /home/bruga, o mesmo em que o script esta salvo.

Queria entender se ha alguma relação entre salvar o script na pasta raiz, de forma automatica o backup será salvo nela.

Obrigado desde ja.

1 resposta

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.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!