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 formatoAAAA-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
Postar um comentário