Si tu NAS guarda videos, archivos de copia de seguridad, imágenes de instalación o carpetas exportadas de fotos, los duplicados pueden consumir cientos de GB o incluso varios TB sin que lo notes. La forma tradicional suele ser borrar duplicados o reemplazarlos por enlaces duros, pero ninguna de las dos opciones es ideal para almacenamiento NAS a largo plazo.
Una forma más segura es usar jdupes para hacer deduplicación a nivel de bloques en un sistema de archivos compatible con CoW.
Para usuarios de NAS Synology y FN OS, si el volumen usa Btrfs, jdupes -B puede llamar a la capacidad del sistema de archivos y hacer que los archivos duplicados compartan los mismos bloques físicos de datos. En el árbol de directorios siguen pareciendo archivos independientes, pero por debajo solo ocupan una copia real.
Diferencia entre deduplicación CoW y enlaces duros
Un enlace duro funciona haciendo que varias rutas apunten al mismo inode.
Eso ahorra espacio, pero tiene un problema claro: si un programa modifica uno de esos archivos, todas las rutas enlazadas ven el mismo cambio. En bibliotecas multimedia, carpetas de sincronización, gestores de fotos y directorios de respaldo, ese comportamiento puede causar problemas difíciles de detectar.
La deduplicación CoW de Btrfs funciona de otra manera.
Su lógica es: varios archivos independientes pueden compartir los mismos bloques de datos; cuando uno de ellos se modifica, el sistema de archivos escribe solo la parte modificada en bloques nuevos, y los demás archivos no se ven afectados.
Después de la deduplicación CoW:
- las rutas de archivo siguen siendo independientes;
- borrar un archivo no borra los demás;
- modificar un archivo no modifica los demás;
- las partes duplicadas solo ocupan una copia física en disco.
Por eso jdupes -B suele ser mejor para un NAS que la deduplicación con enlaces duros.
Casos adecuados
La deduplicación CoW es útil para directorios como:
- episodios y películas descargados varias veces en una biblioteca multimedia;
- instaladores, ISO y archivos comprimidos guardados en varias carpetas;
- fotos o videos exportados repetidamente;
- archivos grandes duplicados generados por herramientas de copia de seguridad;
- directorios temporales copiados durante tareas manuales de organización.
No conviene empezar escaneando todo el volumen del sistema. Es más seguro probar primero con una carpeta de datos de usuario, por ejemplo:
|
|
Prueba el comando, las reglas de exclusión y el ahorro real en un ámbito pequeño antes de ampliar el escaneo.
Comando básico
Para usar jdupes con deduplicación CoW sobre un directorio Btrfs, la opción clave es -B:
|
|
Significado de las opciones:
-r: escanea subdirectorios de forma recursiva;-B: aplica deduplicación Btrfs/CoW a los duplicados encontrados, en lugar de crear enlaces duros;"/volume1/data1/aaa/": directorio objetivo que se va a escanear.
La parte más importante es -B. Hace que jdupes use la capacidad de deduplicación del sistema de archivos, normalmente mediante interfaces de bajo nivel como reflink, clone o dedupe range.
En Synology conviene excluir @eaDir y #recycle
En Synology, normalmente no conviene incluir @eaDir ni #recycle en el escaneo.
@eaDir es un directorio oculto generado por Synology. Suele guardar miniaturas, índices multimedia, atributos extendidos y cachés relacionados con paquetes. Contiene muchos archivos pequeños, cuesta escanearlo, aporta poco ahorro y puede interferir con los servicios de indexación de Synology.
#recycle es la papelera de las carpetas compartidas. Los archivos que contiene ya están pendientes de eliminación, así que deduplicarlos aporta poco y complica la interpretación de resultados.
Por eso, en Synology es mejor excluir ambos directorios.
Distintas versiones de jdupes soportan formas diferentes de la opción -X. Algunos tutoriales usan:
|
|
Pero en algunos entornos Synology aparece este error:
|
|
Si la ayuda de jdupes -X muestra soporte para nostr:text_string, usa esta forma más compatible:
|
|
El significado es directo:
-X nostr:/@eaDir/: excluye archivos cuya ruta contenga/@eaDir/;-X nostr:/#recycle/: excluye archivos cuya ruta contenga/#recycle/.
Si la ruta objetivo contiene caracteres chinos o espacios, usa siempre comillas:
|
|
Cómo entenderlo en un NAS FN OS
Si FN OS usa un pool de almacenamiento Btrfs, la idea es similar a Synology: confirma que el directorio objetivo está en Btrfs y usa jdupes -B para aplicar deduplicación CoW.
La diferencia está en que los directorios ocultos del sistema pueden tener otros nombres. En Synology suelen aparecer @eaDir y #recycle; en FN OS conviene decidir las reglas de exclusión según la estructura real.
Empieza listando los directorios cercanos:
|
|
Comprueba si hay cachés del sistema, papeleras, directorios de índice o carpetas de datos de aplicaciones. Lo que realmente merece deduplicarse suelen ser archivos grandes de usuario, no pequeños cachés generados por el sistema.
Cómo confirmar que la deduplicación CoW funcionó
No te fíes solo de ls -l. Después de la deduplicación CoW, el tamaño lógico de los archivos no cambia y el directorio sigue mostrando varios archivos completos.
Hay tres formas más fiables de verificarlo.
1. Revisar la salida de jdupes
Durante la ejecución, una salida como esta suele indicar que se detectaron y procesaron duplicados:
|
|
[SRC] indica el archivo fuente. Los archivos que aparecen después de ====> han sido deduplicados contra los mismos bloques de datos subyacentes. Siguen existiendo de forma independiente, pero su almacenamiento físico se ha consolidado.
2. Comparar el uso de espacio de Btrfs
Antes y después de deduplicar, ejecuta:
|
|
Fíjate en estos campos:
|
|
Si la deduplicación surtió efecto, normalmente verás:
Useddisminuye;Data,single: Useddisminuye;Free (estimated)aumenta.
Por ejemplo, si Used baja de 8.44TiB a 8.20TiB, incluso una reducción de unas decenas de GB significa que la deduplicación CoW liberó espacio físico.
3. Usar compsize para ver el uso real
Si el sistema permite instalar compsize, ofrece una vista más clara del uso real en Btrfs después de compresión y deduplicación:
|
|
Es más adecuado que du para entender la ocupación real en Btrfs.
Recomendaciones para ejecutarlo con seguridad
Un flujo prudente sería:
- Confirma que el directorio objetivo está en un volumen Btrfs;
- Prueba primero con una carpeta pequeña, no con todo el volumen;
- Excluye directorios ocultos del sistema, papeleras y cachés de aplicaciones;
- Usa comillas si la ruta contiene caracteres chinos o espacios;
- Registra
btrfs filesystem usageantes de deduplicar; - Ejecútalo de nuevo después y compara
UsedyFree (estimated); - Si no estás seguro del significado de una opción, ejecuta
jdupes --helpy revisa los filtros que soporta tu versión instalada.
En Synology, un buen comando inicial es:
|
|
Si tu versión de jdupes no soporta nostr, ajusta las opciones de filtro según la salida de jdupes -X o jdupes --help.
Resumen
El valor de Btrfs + jdupes -B es que permite ahorrar espacio sin borrar archivos ni convertirlos en enlaces duros. El contenido duplicado comparte bloques físicos, mientras cada archivo sigue siendo independiente.
Para usuarios de NAS Synology y FN OS, es especialmente útil con videos duplicados, archivos de respaldo y directorios grandes de recursos multimedia. Lo importante es controlar el alcance del escaneo y las reglas de exclusión: céntrate en datos de usuario, evita cachés del sistema y papeleras, y compara el uso de Btrfs antes y después.
Para ahorrar espacio de forma segura, recuerda este patrón:
|
|