3 Scripts em Bash para Backup Automático e Manipulação de Arquivos no Linux



1. Compactar Pasta com Data no Nome (Backup Automatizado)

Cria um arquivo comprimido .tar.gz de uma pasta específica, adicionando a data atual no nome do arquivo para controle de versão.

Bash
#!/bin/bash

DIRETORIO_ORIGEM="/var/www/html"
DIRETORIO_DESTINO="/backups"
DATA=$(date +%Y-%m-%d_%H-%M)
ARQUIVO_BACKUP="backup_site_${DATA}.tar.gz"

# Cria o diretório de destino se não existir
mkdir -p "$DIRETORIO_DESTINO"

# Compacta a pasta de origem
tar -czf "${DIRETORIO_DESTINO}/${ARQUIVO_BACKUP}" "$DIRETORIO_ORIGEM" 2>/dev/null

if [ $? -eq 0 ]; then
  echo "✅ Backup criado com sucesso: ${ARQUIVO_BACKUP}"
else
  echo "❌ Falha ao criar o arquivo de backup."
fi
Pontos-chave:

  • date +%Y-%m-%d_%H-%M: Gera um carimbo de data/hora no formato AAAA-MM-DD_HH-MM.

  • tar -czf: As flags significam create (criar), gzip (comprimir), file (nome do arquivo).

  • mkdir -p: Garante que a pasta de destino exista antes de tentar salvar o arquivo.

2. Buscar e Deletar Logs Mais Antigos que 30 Dias

Varre um diretório de logs e remove automaticamente apenas os arquivos .log com última modificação superior ao prazo definido, liberando espaço em disco.

Bash
#!/bin/bash

PASTA_LOGS="/var/log/minha-aplicacao"
DIAS=30

# Busca arquivos .log criados/modificados há mais de 30 dias e deleta
find "$PASTA_LOGS" -type f -name "*.log" -mtime +$DIAS -exec rm -f {} \;

echo "🧹 Limpeza concluída: arquivos com mais de $DIAS dias foram removidos."
Pontos-chave:

  • -type f: Filtra a busca para considerar apenas arquivos (ignora pastas).

  • -mtime +30: Seleciona apenas arquivos modificados há mais de 30 dias.

  • -exec rm -f {} \;: Executa a remoção forçada para cada item encontrado ({} representa o caminho do arquivo).

3. Renomear Arquivos em Lote (Adicionar Prefixo/Sufixo)

Percorre todos os arquivos de um diretório e adiciona um prefixo ou altera extensões em lote de forma padronizada.

Bash
#!/bin/bash

DIRETORIO="./documentos"
PREFIXO="CONFIDENCIAL_"

# Entra na pasta
cd "$DIRETORIO" || exit

# Percorre todos os arquivos da pasta e renomeia
for arquivo in *; do
  # Verifica se é um arquivo comum (ignora se for pasta)
  if [ -f "$arquivo" ]; then
    mv "$arquivo" "${PREFIXO}${arquivo}"
    echo "Renomeado: $arquivo -> ${PREFIXO}${arquivo}"
  fi
done
Pontos-chave:

  • for arquivo in *: Loop que passa por cada item dentro do diretório atual.

  • if [ -f "$arquivo" ]: Proteção essencial para não renomear subpastas sem querer.

  • mv "$arquivo" "${PREFIXO}${arquivo}": Substitui o nome original anexando o prefixo desejado na frente.


Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server