
🌐 También en: English · Deutsch · Français
😤 Cuando una copia de seguridad falla… por culpa de un nombre de archivo
Hace poco, una de mis copias de seguridad automatizadas en Linux se cayó a mitad de ejecución sin previo aviso. Ningún mensaje de error vistoso, ningún plan B elegante: simplemente se abortó en silencio.
Tras una buena sesión de grep y de espeleología por los logs, di con el culpable: un único archivo con un nombre no conforme que la herramienta de copias no era capaz de procesar. Y lo mejor de todo: el archivo venía de un sistema macOS (MacBook Air). Cómo no. 😅
Resulta que a macOS le encanta espolvorear unas cuantas rarezas Unicode encantadoras, caracteres invisibles y un uso muy creativo de los símbolos especiales. Genial para los humanos, no tanto para los sistemas de archivos de Linux ni para las herramientas de copia de seguridad.
💾 Entra en escena rdiff-backup: mi arma favorita para copias de seguridad versionadas
Uso rdiff-backup para mis copias de seguridad diarias porque admite copias versionadas e incrementales, como Time Machine, pero más friki y pensado para la línea de comandos:
rdiff-backup /data /mnt/backup/dataPero aquí viene lo bueno: rdiff-backup se atragantó con ese nombre de archivo malformado y tiró la toalla. Nada de magia incremental, nada de versionado: solo un fallo.
Lección aprendida: limpia tus archivos antes de hacer la copia. Así que añadí un paso previo a la copia de seguridad: detox.
🧼 ¿Qué es detox y por qué debería importarte?
detox es una pequeña herramienta de línea de comandos para Linux que limpia de forma recursiva los nombres de archivo caóticos eliminando caracteres problemáticos como:
- Espacios
- Diéresis alemanas (ä, ö, ü → ae, oe, ue)
- La locura de Unicode
- Símbolos raros y caracteres de control
Perfecta para archivos que vienen de… bueno… de cualquier sitio que no sea Linux.
🛠️ Instalación
En la mayoría de las distribuciones es tan sencillo como:
sudo apt install detox🚀 Uso básico
Para limpiar un directorio de forma recursiva:
detox -r /your/directory🔧 La magia del antes y el después
| Nombre de archivo original | Limpio |
|---|---|
| Urlaubsfotos 2024 (Köln).jpg | Urlaubsfotos_2024_Koeln.jpg |
| Résumé_finalé.pdf | Resume_finale.pdf |
| Projekt 1#Beta!.zip | Projekt_1Beta.zip |
🧪 Esquemas recomendados
detox admite varios «esquemas» que definen cómo se sanean los nombres de archivo. Esto es lo que mejor me ha funcionado:
detox -r -s utf_8 -s iso8859_1 -v /datautf_8: elimina cosas raras de Unicode multibyteiso8859_1: translitera los acentos alemanes y franceses-v: muestra exactamente qué se está renombrando (muy recomendable)
🔁 Así queda ahora mi pipeline de copias de seguridad
# Step 1: Clean up file names
detox -r -s utf_8 -s iso8859_1 -v /data
# Step 2: Run versioned backup
rdiff-backup /data /mnt/backup/data
Desde que incorporé detox a la receta, mis ejecuciones de rdiff-backup van como la seda, incluso cuando sincronizo archivos caóticos de macOS, memorias USB o carpetas sincronizadas en la nube.
🧙 Automatízalo como un auténtico friki
Si te va el scripting, aquí tienes un ejemplo sin rodeos:
#!/bin/bash
SOURCE="/data"
TARGET="/mnt/backup/data"
# Clean first
detox -r -s utf_8 -s iso8859_1 -v "$SOURCE"
# Then backup with version history
rdiff-backup "$SOURCE" "$TARGET"
Añádelo a cron, a systemd o a lo que uses para automatizar. Tu yo del futuro te lo agradecerá.
📚 Reflexiones finales
Si haces copias de seguridad, sincronizas archivos entre sistemas operativos o simplemente quieres nombres de archivo que no hagan llorar a tus scripts de shell, detox es imprescindible.
Es pequeña, rápida, recursiva y me salvó el pellejo. Sobre todo combinada con rdiff-backup, hace que tu pipeline de copias de seguridad sea mucho más robusto y determinista.
Y recuerda: garbage in, garbage out. Primero limpiar, después copiar.






