#!/bin/bash # Baixa a base completa de CNPJ da Receita Federal (extrato mais recente) a partir do # espelho publico da Casa dos Dados (mesma base oficial, servida via Cloudflare). # Uso: bash scripts/baixar-base-rfb.sh set -e BASE_URL="https://dados-abertos-rf-cnpj.casadosdados.com.br/arquivos/2026-06-14" DEST_DIR="prospeccao/cnpj/rfb-raw" mkdir -p "$DEST_DIR" FILES=( Cnaes.zip Motivos.zip Municipios.zip Naturezas.zip Paises.zip Qualificacoes.zip Simples.zip Empresas0.zip Empresas1.zip Empresas2.zip Empresas3.zip Empresas4.zip Empresas5.zip Empresas6.zip Empresas7.zip Empresas8.zip Empresas9.zip Estabelecimentos0.zip Estabelecimentos1.zip Estabelecimentos2.zip Estabelecimentos3.zip Estabelecimentos4.zip Estabelecimentos5.zip Estabelecimentos6.zip Estabelecimentos7.zip Estabelecimentos8.zip Estabelecimentos9.zip Socios0.zip Socios1.zip Socios2.zip Socios3.zip Socios4.zip Socios5.zip Socios6.zip Socios7.zip Socios8.zip Socios9.zip ) TOTAL=${#FILES[@]} COUNT=0 for FILE in "${FILES[@]}"; do COUNT=$((COUNT+1)) DEST="$DEST_DIR/$FILE" if [ -f "$DEST" ]; then EXPECTED=$(curl -sI --max-time 20 "$BASE_URL/$FILE" | grep -i content-length | tr -d '\r' | awk '{print $2}') ACTUAL=$(stat -c%s "$DEST" 2>/dev/null || stat -f%z "$DEST" 2>/dev/null) if [ -n "$EXPECTED" ] && [ "$EXPECTED" == "$ACTUAL" ]; then echo "[$COUNT/$TOTAL] $FILE ja existe e esta completo ($ACTUAL bytes). Pulando." continue fi fi echo "[$COUNT/$TOTAL] baixando $FILE ..." curl -sS --retry 3 --retry-delay 5 --max-time 1800 -o "$DEST" "$BASE_URL/$FILE" SIZE=$(stat -c%s "$DEST" 2>/dev/null || stat -f%z "$DEST" 2>/dev/null) echo "[$COUNT/$TOTAL] $FILE concluido ($SIZE bytes)" done echo "download completo." du -sh "$DEST_DIR"