62 lines
2.0 KiB
Bash
Executable File
62 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# backup-minio.sh - Script de backup do MinIO no servidor
|
|
# Uso: ./backup-minio.sh
|
|
# Agendar no crontab: 0 2 * * * /caminho/para/backup-minio.sh
|
|
|
|
set -e
|
|
|
|
# ============ CONFIGURAÇÃO ============
|
|
BACKUP_DIR="/var/backups/minio" # Onde salvar os backups no servidor
|
|
RETENTION_DAYS=7 # Quantos dias manter
|
|
VOLUME_NAME="course-plat_minio_data" # Nome do volume Docker
|
|
COMPRESSION="gzip" # gzip ou none
|
|
|
|
# Criar diretório de backup se não existir
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# Data atual para o nome do arquivo
|
|
DATE=$(date +%Y%m%d-%H%M%S)
|
|
BACKUP_FILE="$BACKUP_DIR/minio-backup-$DATE.tar.gz"
|
|
|
|
echo "=========================================="
|
|
echo "Backup MinIO iniciado em: $(date)"
|
|
echo "=========================================="
|
|
|
|
# ============ FAZER BACKUP ============
|
|
echo "Criando backup do volume $VOLUME_NAME..."
|
|
|
|
if [ "$COMPRESSION" = "gzip" ]; then
|
|
docker run --rm \
|
|
-v "$VOLUME_NAME:/data:ro" \
|
|
-v "$BACKUP_DIR:/backup" \
|
|
alpine tar czf "/backup/$(basename "$BACKUP_FILE")" -C /data .
|
|
else
|
|
docker run --rm \
|
|
-v "$VOLUME_NAME:/data:ro" \
|
|
-v "$BACKUP_DIR:/backup" \
|
|
alpine tar cf "/backup/$(basename "$BACKUP_FILE")" -C /data .
|
|
fi
|
|
|
|
# ============ VERIFICAR ============
|
|
if [ -f "$BACKUP_FILE" ]; then
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
|
echo "✓ Backup criado: $BACKUP_FILE ($SIZE)"
|
|
else
|
|
echo "✗ ERRO: Backup não foi criado!"
|
|
exit 1
|
|
fi
|
|
|
|
# ============ LIMPAR BACKUPS ANTIGOS ============
|
|
echo "Limpando backups com mais de $RETENTION_DAYS dias..."
|
|
find "$BACKUP_DIR" -name "minio-backup-*.tar.gz" -mtime +$RETENTION_DAYS -delete
|
|
|
|
# ============ LISTAR BACKUPS RESTANTES ============
|
|
echo ""
|
|
echo "Backups disponíveis:"
|
|
ls -lh "$BACKUP_DIR"/minio-backup-*.tar.gz 2>/dev/null || echo "Nenhum backup encontrado."
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Backup concluído em: $(date)"
|
|
echo "=========================================="
|