ReboFilesDocs
Empezar3
Qué es ReboFiles
Primeros pasos
Demos para ejecutar
Ponlo en tu app6
Componente de React
Headless: tu propia interfaz
Sin framework
Estilos y temas
Teclado y accesibilidad
Idiomas
Archivos9
Subidas
Vistas previas y el visor
Búsqueda
Cambios en vivo y carpetas grandes
Comentarios
Destacados y campos
Versiones, papelera y espacio
Descargar como .zip
Documentos de Word
El servidor14
La ruta
Frameworks e inicio de sesión
Quién puede hacer qué
Almacenamiento: S3, GCS, Azure y disco
Revisar las subidas
Metadatos: SQLite y Postgres
Esquema de la base de datos
Compartir y enlaces
Actividad y notificaciones
Ganchos, registros y límites
Retención, bloqueos y exportación
Escritorio y otros orígenes
Sincronizar una carpeta
Ir a producción
En equipo1
Asistentes de IA (MCP)
Referencia5
Paquetes
Componentes y hooks
API del cliente
Rutas HTTP
Estado y hoja de ruta
↑↓ para moverte↵ para abrirEsc para cerrar38 páginas

El servidor Sincronizar una carpeta

Sincronizar una carpeta

@rebofiles/sync mantiene una carpeta del disco igual que una del drive. Cada pasada lista las dos y las compara con lo que eran la última vez que fueron iguales, así sabe qué lado cambió.
Escritorio

En la aplicación de escritorio

Server → Sync a Folder… (⇧⌘S) pregunta qué carpeta, ~/ReboFiles si no se dice, y la mantiene mientras la ventana está abierta: al empezar, cuando el drive avisa un cambio, cuando la ventana vuelve al frente, y cada medio minuto. La etiqueta de abajo dice cómo fue. El disco lo leen y escriben los comandos propios de la aplicación, que nunca salen de esa carpeta.

CLI

Como comando

En cualquier computadora con Node, también como servicio.

npx rebofiles-sync ~/ReboFiles --server https://app.example.com/api/files --token "$TOKEN"
npx rebofiles-sync ./Clients --server … --folder <id of a folder of the drive> --once
API

En tu código

import { createDriveClient } from '@rebofiles/drive';
import { watchSync } from '@rebofiles/sync';

const client = createDriveClient({ base: 'https://app.example.com/api/files', headers: () => ({ authorization: `Bearer ${token}` }) });
const sync = watchSync({ client, folder: '/Users/ana/ReboFiles', onAction: (action) => console.log(action) });
// sync.stop()
Reglas

Lo que hace

CuandoHace
Nuevo en un ladoLo crea en el otro: una carpeta, o el archivo enviado o traído.
Cambiado en un ladoUna versión nueva en el drive, o el archivo del disco escrito de nuevo.
Cambiado en los dosEl del drive con su nombre; el del disco al lado como “nombre (conflict 2026-10-26 14.05).ext”, enviado como archivo propio.
Ya no está en el discoA la papelera del drive, de donde vuelve; salvo que cambiara en el drive desde entonces, que se trae otra vez.
Ya no está en el driveApartado en el disco, en .rebofiles/removed/; salvo que cambiara en el disco desde entonces, que se envía otra vez.
Movido o renombrado en el driveMovido en el disco, una carpeta con lo que tiene dentro.
Un archivo movido en el discoMovido en el drive, el mismo archivo con sus versiones, encontrado por su tamaño y hora.
Límites

Lo que no hace

  • Una carpeta renombrada en el disco se envía otra vez como nueva, y la vieja va a la papelera: los archivos son los mismos, sus versiones empiezan de nuevo.
  • Una carpeta vacía en el disco donde había archivos se toma por un disco que no está, y no se hace nada hasta que se diga (allowEmpty).
  • Los archivos de los sistemas (.DS_Store, Thumbs.db, los ~$ de Office) se dejan fuera, y también su propia carpeta .rebofiles.
  • Un archivo va entero cada vez, no solo la parte que cambió.
Partes

Solo viaja lo que cambió

Un archivo cambiado un poco va como una versión nueva de solo las partes que cambiaron: cada versión guarda el SHA-256 de sus partes de 8 MiB, y las partes iguales se copian en el almacenamiento desde la versión anterior (UploadPartCopy de S3, una copia en el disco), sin enviarse otra vez. Un video de un gigabyte con el título cambiado envía 8 MiB. Cualquier subida puede, con partHashes: true.