Skip to content

Un script de Node.js de alto rendimiento diseñado para sincronizar masivamente archivos locales (200k+) hacia Firebase Storage.

Notifications You must be signed in to change notification settings

ChannelF-Oleo/-Firebase-Storage-Bulk-Synchronizer-Smart-Upload-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 

Repository files navigation

#☁️ Firebase Storage Bulk Synchronizer
###Script de Carga Masiva para Padrón Fotográfico

![NodeJS](https://img.shields.io/badge/node.js-v14+-6DA55F?style=for-the-badge&logo=node.js&logoColor=white)
![Firebase](https://img.shields.io/badge/firebase-admin-ffca28?style=for-the-badge&logo=firebase&logoColor=black)


Sincronización inteligente de imágenes locales a Firebase Storage con sistema de recuperación de fallos.

---

##⚡ Características Principales

* **🔄 Sistema de Resume (Continuidad):** Si el proceso se interrumpe (pérdida de internet, apagón), el script guarda el estado en `progreso.json`. Al reiniciar, detecta la sesión anterior y continúa exactamente donde se quedó.
* **🚀 Concurrencia Controlada:** Procesa subidas en lotes de **15 archivos simultáneos** (configurable) para maximizar el ancho de banda sin saturar la red.
* **🧠 Smart Diffing:** Evita resubir archivos existentes comparando tu carpeta local contra una lista pre-generada de la nube (`lista_storage.txt`).
* **📁 Organización Automática:** Sube las imágenes desde la carpeta local `./fotos` hacia la ruta remota `votantes_fotos/`.

---

##🛠️ Requisitos y Configuración

###1. Prerrequisitos

* **Node.js** instalado.
* **Cuenta de Servicio de Firebase:** Archivo `.json` con permisos de escritura en Storage.

###2. Estructura de Archivos Esperada

El script asume la siguiente estructura de directorios:

```text
📦 tu-proyecto
 ┣ 📂 fotos                   <-- Coloca aquí las imágenes (.jpg, .png) a subir
 ┣ 📂 src
 ┃ ┗ 📂 data
 ┃   ┗ 📜 lista_storage.txt   <-- Lista de archivos ya existentes en la nube (generada con gsutil o similar)
 ┣ 📜 cargarPadron.js         <-- Este script
 ┗ 📜 service-account.json    <-- Tu archivo de credenciales (nombre puede variar)
````

###3\. Configuración del Script

Abre `cargarPadron.js` y edita la sección de **CONFIGURACIÓN** al inicio del archivo:

```javascript
// Debes completar estas variables antes de ejecutar:
const SERVICE_ACCOUNT = "./path/a/tu/service-account.json"; // Ruta a tu llave JSON
const BUCKET_NAME = "tu-proyecto.appspot.com";              // Nombre de tu bucket
```

-----

##🚀 Modo de Uso

1.  **Instalar dependencias:**

    ```bash
    npm install firebase-admin
    ```

2.  **Ejecutar el script:**

    ```bash
    node cargarPadron.js
    ```

3.  **Flujo de ejecución:**

      * El script verificará si existe una sesión previa (`progreso.json`).
      * Si es una nueva sesión, comparará `./fotos` con `./src/data/lista_storage.txt` para identificar faltantes.
      * Se te pedirá confirmación para iniciar la carga: `(s/n)`.
      * Verás una barra de progreso con el porcentaje y archivos restantes.

-----

##📝 Archivos Generados

El script genera automáticamente estos archivos para control:

  * `progreso.json`: Base de datos temporal de archivos pendientes. **No borrar** si deseas resumir la carga luego. Se borra automáticamente al finalizar con éxito.
  * `faltantes_lista.txt`: Lista legible por humanos de todos los archivos que faltan por subir al momento del escaneo.

-----

##⚠️ Notas Importantes

  * **Lista de Storage:** El archivo `lista_storage.txt` es crucial para no duplicar trabajo. Asegúrate de que contenga los nombres de los archivos que YA están en la nube (puede estar codificado en UTF-8 o UTF-16).
  * **Formatos:** Solo se procesan archivos con extensión `.jpg`, `.jpeg` o `.png`.




About

Un script de Node.js de alto rendimiento diseñado para sincronizar masivamente archivos locales (200k+) hacia Firebase Storage.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published