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.
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 probable | Señales típicas | Comprobació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 usuario | Conflictos 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 archivos | Vistas “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 ruta | La 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)
- 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.
- 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
- 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.
- 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)
- Descarga y ejecuta Process Monitor en el servidor. Activa Enable Advanced Output y añade columnas Process Name, Command Line, Authentication ID.
- Filtros recomendados:
- Path begins with
D:\Datos\Compartido\CarpetaProblemática
(o la ruta UNC del share). - Operation is
CreateFile
ORSetRenameInformationFile
ORCreateFileMapping
. - Result is
SUCCESS
.
- Path begins with
- 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. - Guarda el rastro (Save → Native PML) por si necesitas escalarlo.
Auditoría de acceso a archivos (eventos 4663/4656) y recurso compartido (5145)
- 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"
- 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”.
- 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)
- Abre dfsmgmt.msc y localiza la carpeta en grupos de replicación.
- Verifica que no existan rutas circulares ni targets duplicados que apunten al mismo volumen mediante enlaces simbólicos.
- 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
- En el PC del usuario: Panel de control → Sync Center → Manage offline files → Disable (requiere reinicio).
- En el servidor, mantén el share sin caché (
-CachingMode None
). - 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 destinoD:\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"
oRemove-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)
- Respaldo o snapshot del volumen o carpeta afectada.
- Identifica el patrón de nombres que generó la duplicación (paréntesis, sufijos “copy”, timestamps, etc.).
- 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)
Paso | Acción | Resultado esperado |
---|---|---|
Contener | Solo lectura o retirar “Modificar”; -CachingMode None ; detener agentes sospechosos. | Dejan de aparecer nuevas copias. |
Detectar | ProcMon con filtros; auditoría 4663/5145 en la carpeta. | Identificas proceso y usuario que crean/renombran. |
Confirmar causa | Desactiva tarea/cliente/DFS/Offline Files según sospecha; reproduce. | La duplicación NO ocurre con la causa deshabilitada. |
Corregir | Arregla script/DFS/cliente de sync/AV; elimina junctions; chkdsk si procede. | Estabilidad al editar la carpeta. |
Limpiar | Listar candidatos y eliminar con PowerShell (con -WhatIf primero). | La carpeta vuelve a su estado original sin copias. |
Prevenir | Auditorí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.