4 votos

¿Remedios para que "cp -p" no conserve los nanosegundos en High Sierra con APFS?

No sé si esto afecta a las versiones de macOS más recientes que High Sierra, pero parece que cp -p no conservará las marcas de tiempo con resolución de nanosegundos.

Debido a esto, el shell puede decir erróneamente que un archivo es más antiguo que otro aunque haya sido copiado por cp -p . Esto rompe las dependencias del sistema de construcción cuando algunos archivos fueron instalados por cp -p : siguen reinstalando y reinstalando de nuevo porque los nanosegundos no coinciden.

¿Puede sugerir alguna solución para esto? Pensé en compilar mi propio cp binario, pero sin embargo cp suele ser un shell builtin, y además no conozco ningún nanosegundo que preserve cp versión que existe.

Nota: Conozco una solución, pero no es razonable: Ejecutar touch en el archivo fuente antes de ejecutar cp -p . Porque touch tampoco conserva los nanosegundos, los pone a cero en el archivo fuente, por lo que el resultado después de cp -p garantiza exactamente la misma marca de tiempo. Sin embargo, como he dicho, no es razonable, porque no me gusta touch archivos sólo por esto: se pierde su última fecha real de guardado.

3voto

Es bueno saber que no soy el único que piensa que esto es un problema. Me encontré con él mientras escribía un script de Python para supervisar partes de mi sistema de archivos de MacOS (10.15.7), que también implicaba la copia de archivos. El script a veces se comportaba de forma errática y producía una salida imprevisible . Después de husmear un poco descubrí que la incapacidad de cp -p para preservar los nanosegundos es el núcleo del problema.

Una solución para su problema (pero no para el mío) podría ser coreutils : gcp -p se comporta como es debido.

2voto

thakis Puntos 99

Pensé que esto se había solucionado en la 10.15, pero no reproduje el problema correctamente. Para ahorrar a otros la misma vergüenza, aquí hay una repro que muestra el problema:

% python3 -c 'open("file1", "w")'
% stat -f %Fm file1
1609301645.481666557
% cp -p file1 file2
% stat -f %Fm file2
1609301645.481666000

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X