Tecnología · GUÍA PRÁCTICA
¿cp dice “preserving times … Operation not permitted”? Demuestra primero el contrato de metadatos
Los datos pueden haberse copiado aunque fallara una actualización de metadatos. Conserva el binario, el objeto destino y el primer atributo rechazado; decide después si tiempos, dueño, modo, ACL o xattr son obligatorios.

Los datos pueden haberse copiado aunque fallara una actualización de metadatos. Conserva el binario, el objeto destino y el primer atributo rechazado; decide después si tiempos, dueño, modo, ACL o xattr son obligatorios.
Escribir los datos no demuestra que se conservaran tiempos, dueño, modo, ACL, contexto de seguridad o atributos extendidos.
1. Fija la copia y el destino exactos
Guarda comando, ejecutable y versión de cp, usuario efectivo, origen, destino, estado de salida y primer diagnóstico sin filtrar. Anota si el destino ya existía y quién era su dueño.
No repitas enseguida con sudo, no sobrescribas la única copia ni descartes stderr: ocultarías si falló tiempo, dueño, modo, contexto o xattr.
2. Compara bytes y atributos por separado
Compara hash o bytes de una muestra no sensible y registra tipo, tamaño, dueño, grupo, modo, atime y mtime con zona y precisión. Revisa ACL, xattr y etiquetas solo si el uso los exige.
Haz una matriz de requerido, soportado y observado. Un hash correcto con mtime nuevo sirve para transferencia, pero puede fallar para copia incremental, compilación reproducible o archivo legal.
3. Distingue autoridad de soporte
Identifica la implementación porque BusyBox y GNU difieren. Resuelve sistema de archivos y opciones de montaje; repite con un archivo desechable propiedad del usuario.
Si un destino nuevo conserva tiempos pero uno existente no, investiga dueño o inmutabilidad. Si ambos fallan, prueba soporte, solo lectura, mapeo de ID o política. Que sudo funcione es una pista, no una autorización.
4. Elige una corrección mínima declarada
Si los tiempos son obligatorios y compatibles, escribe un objeto nuevo del usuario o prepara autoridad revisada. Si un atributo es irrelevante e incompatible, omite solo ese y registra la pérdida. Usa un archivo contenedor o herramienta nativa si deben sobrevivir varios atributos.
No hagas chmod/chown amplios, cambios globales de seguridad ni sudo recursivo por un diagnóstico sin explicar. Que lleguen nombre y bytes no demuestra propiedad Unix en FAT.
5. Verifica según el uso real
Repite el flujo real con una muestra representativa. Tras cerrar y reabrir el destino, verifica contenido y cada atributo exigido, incluida zona y precisión temporal.
Acepta solo si pasa la matriz, la política de salida distingue pérdidas permitidas de fallos nuevos y existe reversión. Si el destino no cumple el contrato, cambia el contenedor o el destino.
