Windows Server 2012 R2: carpeta se duplica 100 veces al editarla (diagnóstico, scripts y solución)

En un recurso compartido de Windows Server 2012 R2, una carpeta se duplica masivamente (decenas o cientos de copias) al editarla. A continuación tienes un procedimiento probado para aislar la causa, diagnosticar con precisión y corregir de forma segura, con ejemplos concretos y scripts listos para usar.

Índice

Resumen de la pregunta

En un share alojado en Windows Server 2012 R2, al renombrar o modificar una carpeta específica se crean cerca de 100 copias de ella misma. El problema no ocurre en otras carpetas del mismo servidor. ¿Cómo diagnosticar y corregir el problema?

Causas más probables y cómo reconocerlas

Estas son las hipótesis más frecuentes (y sencillas de validar), con señales típicas y la primera comprobación rápida sugerida.

Causa probableSeñales típicasComprobación rápida
Automatización o software de sincronización/backup (PowerShell con FileSystemWatcher, Robocopy/Xcopy, agente de backup, OneDrive/Dropbox/Work Folders)Las copias aparecen con patrón de nombres secuencial; se crean cuando cierto servicio/usuario está activo; logs con “copied/replicated”.Detén temporalmente el servicio/cliente y observa si cesan las copias. ProcMon delata el ejecutable responsable al instante.
Replicación DFS o tarea programada mal configurada (origen/destino apuntando a la misma ruta o a una subcarpeta)Ciclos de replicación, reintentos, actividad inusual de DFSR; el fenómeno se agrava al tocar metadatos.Revisa el grupo de replicación y los targets; busca rutas que se contengan entre sí. Pausa la replicación de esa carpeta.
Archivos sin conexión (Offline Files) en el cliente del usuarioConflictos masivos, carpetas “en conflicto”, actividad solo con ciertos usuarios o dispositivos portátiles.Deshabilita Offline Files en ese equipo y pon el recurso compartido sin caché. Si desaparece, era la causa.
Antivirus/EDR/antimalware con “auto-restore/rollback/ransomware protection”La solución de seguridad registra “protección de carpeta” o “restauración”. Copias con sufijos o rutas temporales.Aplica exclusión temporal a la ruta o desactiva la característica en modo prueba. Verifica si cesa.
Punto de unión/symlink o corrupción del sistema de archivosVistas “duplicadas”, rutas que se referencian a sí mismas, recuentos de directorios anómalos.dir /al y fsutil reparsepoint query sobre la ruta. Programa chkdsk si hay dudas de integridad.
Scripts de inicio de sesión / GPO que actúan sobre esa rutaLa duplicación ocurre al iniciar sesión o en intervalos de directiva; nombres de copia reproducibles.Revisa scripts en GPO y tareas programadas por usuario/equipo que llamen a robocopy/xcopy/powershell.

Aislar el problema (mitigación inmediata)

  1. Congela privilegios de escritura: retira “Modificar” a todos salvo administradores sobre esa carpeta. También puedes poner el recurso en solo lectura temporalmente. Así cortas el “combustible” al bucle.
  2. Deshabilita la caché del recurso compartido: en las propiedades del share, botón Caching… → selecciona “No files or programs from the share are available offline”. En PowerShell:
    Get-SmbShare -Name "Recurso" Set-SmbShare -Name "Recurso" -CachingMode None
  3. Prueba desde una estación limpia: solicita al usuario que parece dispararlo que cierre OneDrive/Dropbox/Work Folders/cliente de backup. Repite la edición desde un equipo de laboratorio sin agentes instalados.
  4. Detén temporalmente agentes sospechosos en el servidor: backup/EDR/robocopy programado. Observa si la creación masiva cesa.

Diagnóstico dirigido: paso a paso

Identificar el proceso que crea las copias (Process Monitor)

  1. Descarga y ejecuta Process Monitor en el servidor. Activa Enable Advanced Output y añade columnas Process Name, Command Line, Authentication ID.
  2. Filtros recomendados:
    • Path begins with D:\Datos\Compartido\CarpetaProblemática (o la ruta UNC del share).
    • Operation is CreateFile OR SetRenameInformationFile OR CreateFileMapping.
    • Result is SUCCESS.
  3. Reproduce el problema (renombra o crea un archivo en la carpeta). ProcMon mostrará el ejecutable responsable (por ejemplo robocopy.exe, onedrive.exe, dropbox.exe, avagent.exe, etc.) y el usuario de seguridad que lo ejecuta.
  4. Guarda el rastro (SaveNative PML) por si necesitas escalarlo.

Auditoría de acceso a archivos (eventos 4663/4656) y recurso compartido (5145)

  1. Habilita auditoría avanzada en el servidor: auditpol /set /category:"Object Access" /success:enable /failure:enable auditpol /set /subcategory:"File System" /success:enable /failure:enable auditpol /set /subcategory:"File Share" /success:enable /failure:enable auditpol /set /subcategory:"Detailed File Share" /success:enable /failure:enable auditpol /get /category:"Object Access"
  2. En la carpeta afectada → Propiedades → Seguridad → Avanzadas → Auditar:
    • Agrega Everyone (o el grupo sospechoso) con Crear archivos/carpetas, Eliminar, Escribir atributos. Marca “Aplicar a esta carpeta, subcarpetas y archivos”.
  3. Reproduce el problema. En el Registro de seguridad, busca:
    • 4663: Acceso a un objeto. Verás la ruta exacta y el proceso/usuario.
    • 4656: Solicitud de manejo del objeto (útil para ver la intención antes del 4663).
    • 5145: Acceso a objeto compartido (muestra cliente, share, objeto y permisos evaluados).

Revisión de tareas y scripts

En muchos casos, una tarea con Robocopy mal parametrizada es la culpable (destino dentro del origen o rutas relativas que se “autoincluyen”).

schtasks /query /fo LIST /v | findstr /i /c:"robocopy" /c:"xcopy" /c:"powershell"
Get-ScheduledTask | ? {$_.Actions -match "robocopy|xcopy|FileSystemWatcher|Sync"} | Format-List *

Inspecciona las líneas de comando: comprueba que el destino no sea una subcarpeta del origen ni un mapeo de la misma ruta.

Replicación DFS (DFSR)

  1. Abre dfsmgmt.msc y localiza la carpeta en grupos de replicación.
  2. Verifica que no existan rutas circulares ni targets duplicados que apunten al mismo volumen mediante enlaces simbólicos.
  3. Si hay dudas, deshabilita temporalmente la replicación de esa carpeta para probar. Revisa el Visor de eventos → DFS Replication.

Software de seguridad (AV/EDR)

Algunas soluciones ofrecen “protección de carpeta” o “rollback de ransomware”. Aunque útiles, pueden crear copias de seguridad o restauraciones automáticas que parecen duplicados. Para probar, excluye la ruta o desactiva la característica en modo supervisado y verifica el comportamiento.

Archivos sin conexión (Offline Files) en el cliente

  1. En el PC del usuario: Panel de control → Sync CenterManage offline filesDisable (requiere reinicio).
  2. En el servidor, mantén el share sin caché (-CachingMode None).
  3. Prueba desde ese cliente: si el fenómeno desaparece, consolida la configuración y deja la ruta excluida de Offline Files vía GPO.

Puntos de reanálisis / symlinks / junctions

Un punto de unión que apunta a un ancestro puede convertir una copia normal en un bucle infinito.

dir /al /s "D:\Compartido\CarpetaProblemática"
fsutil reparsepoint query "D:\Compartido\CarpetaProblemática"
Get-ChildItem -Path "D:\Compartido" -Recurse -Attributes ReparsePoint |
  Select FullName,Target,Attributes

Si detectas un junction/symlink erróneo, elimínalo (rmdir para junction, Remove-Item para symlink) y reestructura la ruta.

Integridad del volumen (NTFS)

La corrupción de metadatos puede provocar comportamientos repetitivos al crear/renombrar. Programa una comprobación:

chkdsk D: /scan
Si reporta errores que requieren corrección:
chkdsk D: /f
Y opcionalmente (más exhaustivo):
chkdsk D: /r

Correcciones según la causa

Automatización o sincronización mal definida

Errores típicos de Robocopy:

  • Definir destino dentro de origen (p.ej. origen D:\Datos\A y destino D:\Datos\A\Backup).
  • Usar rutas UNC que, por mapeos, acaban resolviendo al mismo punto.
  • Lanzar múltiples instancias en paralelo sin bloqueo.

Buenas prácticas:

# Evita bucles: nunca anides destino dentro de origen
robocopy "D:\Datos\Origen" "E:\Backup\Origen" /MIR /R:2 /W:3 /XJ /LOG+:C:\Logs\rbcp.log

Prueba en seco antes de ejecutar (no modifica nada):

robocopy "D:\Datos\Origen" "E:\Backup\Origen" /MIR /L

Si debes excluir subcarpetas que podrían reintroducir el origen:

robocopy "D:\Datos\Origen" "E:\Backup\Origen" /MIR /XD "E:\Backup\Origen" 

Si usas PowerShell con FileSystemWatcher, limita eventos, desactiva “include subdirectories” cuando no sea necesario y usa colas (debounce) para evitar tormentas de eventos.

Replicación DFS mal configurada

  • Rompe relaciones circulares: quita temporalmente la carpeta del grupo de replicación.
  • Verifica que cada target DFSR apunte a rutas independientes (sin junctions recursivos).
  • Rehabilita gradualmente y monitoriza eventos de DFSR tras limpiar las copias.

Offline Files

  • Mantén el share con caché deshabilitada (-CachingMode None).
  • Aplica GPO para excluir esa ruta de Sincronización sin conexión (Equipo → Plantillas administrativas → Red → Archivos sin conexión).

Antivirus/EDR

  • Ajusta la política de protección de carpetas o crea exclusiones para la ruta.
  • Actualiza el agente si hay bugs conocidos que afecten a I/O en red.

Puntos de reanálisis / symlinks

  • Elimina el junction/symlink problemático: rmdir "C:\RutaJunction" o Remove-Item -LiteralPath "C:\RutaSymlink".
  • Reestructura la topología para evitar que una carpeta contenga (directa o indirectamente) su propio destino de copia.

Corrupción de sistema de archivos

  • Ejecuta chkdsk y corrige errores.
  • Valida el estado SMART del disco y revisa el controlador/firmware del almacenamiento.

Limpieza segura de copias (después de contener la causa)

  1. Respaldo o snapshot del volumen o carpeta afectada.
  2. Identifica el patrón de nombres que generó la duplicación (paréntesis, sufijos “copy”, timestamps, etc.).
  3. Lista y valida con PowerShell lo que se eliminaría.

Listar las copias candidatas (previsualización)

# Define la carpeta original (la que NO quieres borrar)
$Base = "D:\Compartido\Carpeta"

\$Parent   = Split-Path \$Base -Parent
\$BaseName = Split-Path \$Base -Leaf

Patrones comunes: "Carpeta (1)", "Carpeta-1", "Carpeta\copy\001", "Carpeta - Copia (3)"

\$Pattern = '^(?:' + \[regex]::Escape(\$BaseName) + ')(?:\[\s-]\(?\:copia|copy)?\[\s-]\$?\d+$?)\$'

\$Candidates = Get-ChildItem -LiteralPath \$Parent -Directory -Force |
Where-Object { \$.Name -match \$Pattern -and \$.FullName -ne \$Base } |
Sort-Object LastWriteTime -Descending |
Select-Object FullName, Name, LastWriteTime,
@{n='Items';e={(Get-ChildItem -LiteralPath \$*.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object).Count}},
@{n='SizeMB';e={(Get-ChildItem -LiteralPath \$*.FullName -Recurse -Force -ErrorAction SilentlyContinue | Measure-Object -Sum Length).Sum / 1MB -as \[int]}}

\$Candidates | Format-Table -AutoSize 

Eliminar solo las copias (confirmación manual)

# Tras validar visualmente $Candidates, elimina en modo seguro (WhatIf):
$Candidates | ForEach-Object {
  Remove-Item -LiteralPath $_.FullName -Recurse -Force -WhatIf
}

Cuando estés 100% seguro, repite sin -WhatIf:

\#\$Candidates | ForEach-Object {

Remove-Item -LiteralPath $\_.FullName -Recurse -Force

\#} 

Script alternativo: coincidencia por contenido

Para entornos con nombres confusos, compara estructura y tamaño.

function Get-FolderSignature {
  param([Parameter(Mandatory)][string]$Path)
  $files = Get-ChildItem -LiteralPath $Path -Recurse -File -Force -ErrorAction SilentlyContinue
  [PSCustomObject]@{
    Path   = $Path
    Count  = $files.Count
    SizeMB = [int](($files | Measure-Object -Sum Length).Sum / 1MB)
  }
}

\$SigBase = Get-FolderSignature -Path \$Base
\$Siblings = Get-ChildItem -LiteralPath \$Parent -Directory -Force |
Where-Object { $\_.FullName -ne \$Base }

\$DuplicatesByContent = foreach(\$dir in \$Siblings){
\$s = Get-FolderSignature -Path \$dir.FullName
if(\$s.Count -eq \$SigBase.Count -and \[math]::Abs(\$s.SizeMB - \$SigBase.SizeMB) -le 1){
\$s
}
}
\$DuplicatesByContent | Sort-Object SizeMB -Descending | Format-Table -AutoSize 

Prevención: deja la ruta a prueba de fallos

  • Auditoría permanente en esa carpeta (4663/5145) con alertas por “creación masiva”.
  • Robocopy con disciplina: siempre prueba con /L, registra con /LOG, y evita destinos anidados. Considere /XJ para ignorar junctions.
  • Deshabilita caché Offline Files en shares críticos (SMB → -CachingMode None) y políticas de exclusión para clientes.
  • Revisión de scripts y GPO mediante control de versiones y validación en un entorno de staging.
  • Monitoreo de DFSR y verificación periódica de la topología para evitar rutas circulares.
  • Mantenimiento: parches del servidor, controladores de almacenamiento y versiones de agentes (backup/EDR) al día.

Checklist operativo (resumen rápido)

PasoAcciónResultado esperado
ContenerSolo lectura o retirar “Modificar”; -CachingMode None; detener agentes sospechosos.Dejan de aparecer nuevas copias.
DetectarProcMon con filtros; auditoría 4663/5145 en la carpeta.Identificas proceso y usuario que crean/renombran.
Confirmar causaDesactiva tarea/cliente/DFS/Offline Files según sospecha; reproduce.La duplicación NO ocurre con la causa deshabilitada.
CorregirArregla script/DFS/cliente de sync/AV; elimina junctions; chkdsk si procede.Estabilidad al editar la carpeta.
LimpiarListar candidatos y eliminar con PowerShell (con -WhatIf primero).La carpeta vuelve a su estado original sin copias.
PrevenirAuditoría, alertas, prácticas Robocopy, políticas Offline Files/GPO.Sin reapariciones durante el monitoreo.

Preguntas rápidas y decisiones

Solo ocurre con un usuario concreto ⇒ casi siempre es Offline Files o un cliente de sincronización en ese equipo. Prueba tras deshabilitarlo.

Solo ocurre cuando corre una tarea nocturna ⇒ revisa Programador de tareas y scripts (Robocopy/Xcopy/PowerShell). Si usas /MIR, valida que el destino no esté dentro del origen.

Los nombres de copia tienen sufijos del antivirus ⇒ revisa políticas de “protección de carpetas/rollback”. Excluye la ruta y actualiza el agente.

La ruta muestra duplicados al navegar por diferentes UNC ⇒ sospecha de junction/symlink. Usa dir /al y corrige el punto de reanálisis.

¿Puede ser ransomware? En esta casuística concreta (copias de la carpeta original y no cifrado), lo habitual es un bucle de sincronización/replicación, no ransomware.

Apéndice: comandos útiles de referencia

# Mostrar configuración de auditoría activa
auditpol /get /category:"Object Access"

Habilitar auditoría relevante

auditpol /set /subcategory:"File System" /success\:enable /failure\:enable
auditpol /set /subcategory:"File Share" /success\:enable /failure\:enable
auditpol /set /subcategory:"Detailed File Share" /success\:enable /failure\:enable

Desactivar caché del share (SMB)

Get-SmbShare -Name "Recurso"
Set-SmbShare -Name "Recurso" -CachingMode None

Enumerar tareas relacionadas con copia/sync

Get-ScheduledTask | Where-Object {$\_.Actions -match "robocopy|xcopy|FileSystemWatcher|sync"} |
Select-Object TaskName, State, Triggers, Actions

Detectar puntos de reanálisis

Get-ChildItem -Path "D:\Compartido" -Recurse -Attributes ReparsePoint

Comprobar y reparar el volumen

chkdsk D: /scan
chkdsk D: /f

Lista ACL/auditoría de la carpeta (útil para validar la configuración)

icacls "D:\Compartido\CarpetaProblemática" 

Conclusión

El patrón “carpeta que se duplica al editarla” en Windows Server 2012 R2 casi siempre se explica por un bucle de sincronización/replicación, Offline Files, un agente de seguridad con restauración automática o un punto de reanálisis mal ubicado. Siguiendo la secuencia propuesta —contención, identificación con ProcMon/auditoría, corrección específica y limpieza segura— podrás detener el fenómeno, restaurar el estado de la carpeta y dejar controles para que no vuelva a ocurrir.

Resultado esperado: con auditoría (4663/5145) y/o ProcMon identificarás el ejecutable y el contexto de seguridad que disparan las copias. Tras corregir la causa (script/DFS/cliente de sync/AV, caché/Offline Files, junctions) el comportamiento cesa. Luego limpias las copias con los scripts propuestos y mantienes vigilancia unas horas para confirmar estabilidad.

Índice