¿Cómo cambiar la fecha / hora de creación (st_birthtime) de un archivo en Lion? [duplicar]

10

touch(1)solo puede cambiar los tiempos de modificación y acceso , pero no tiene opciones para el tiempo de creación . Esto no funciona, al menos no en Lion.

Entonces, ¿cómo puedo cambiar la creación de tiempo, también conocida como hora de nacimiento en fstat(2)? No hay una llamada correspondiente utimes(2)y no parece haber ninguna herramienta de línea de comando para esto.

Sé que puedo copiar el archivo a un nuevo archivo, que luego obtiene la hora actual como hora de nacimiento (y luego elimina el original), pero ¿seguramente debe haber una mejor manera?

Ingmar Hupp
fuente
1
touch -t yyyymmddhhmm $fileparece cambiar la fecha de creación, pero solo si es anterior a la fecha de creación original.
Lri
Buen punto, @Lri: eso realmente tiene sentido, ya que actualiza mtime y atime y no se puede acceder o modificar un archivo antes de crearlo. Pero no me deja establecer un tiempo de creación más nuevo.
Ingmar Hupp
¿Se refiere a cambiarlo a través de la línea de comando, o simplemente en general, no necesariamente con la CLI?
daviesgeek
Francamente, espero que no puedas cambiarlo, ya que seguramente derrotaría todo el punto del campo. También sospecho que parte del problema es que el tiempo de nacimiento / creación no es una característica estándar del sistema de archivos; hfs lo agregó en sus atributos extendidos, creo, así que a menos que las utilidades se hayan actualizado para reconocer eso, no podrán hacer mucho con él.
Cesio

Respuestas:

6

touch -t también cambia el tiempo de creación si el tiempo de modificación de destino es anterior al tiempo de creación original.

SetFile puede establecer el tiempo de creación antes del tiempo de modificación o en el futuro.

-d date    Sets the creation date, where date is a string of the
           form: "mm/dd/[yy]yy [hh:mm:[:ss] [AM | PM]]" Notes:
           Enclose the string in quotation marks if it contains spa-
           ces. The date must be in the Unix epoch, that is, between
           1/1/1970 and 1/18/2038. If the year is provided as a two-
           digit year, it is assumed to be in the 21st century and
           must be from 00 (2000) through 38 (2038).

Esto establecería el tiempo de creación al tiempo de modificación:

SetFile -d "$(GetFileInfo -m test.txt)" test.txt

SetFile y GetFileInfo son parte del paquete de herramientas de línea de comandos, que se puede descargar desde las preferencias de Xcode o developer.apple.com/downloads .

Lri
fuente
Estrictamente hablando "hora de nacimiento" ( crtime) y ctime son cosas diferentes (ver Tiempos de creación de archivos en ZFS
G. Cito
Por supuesto, los tiempos de acceso y modificación son a menudo los mismos, pero por diferentes razones. Las páginas del manual touchy stattienen los detalles. Me interesaría saber cómo OpenZFS para OSX, así como los sistemas de archivos "nativos" de OSX manejan el crtimecampo o qué statinformes para las crtimediversas versiones de OSX.
G. Cito
-1

Tratar:

cat filename > newfile
mv filename ~/.Trash/
mv newfile filename 

Eso debería funcionar.

Sean Freitag
fuente
1
Aún necesitarás eliminar el original. Ingmar ya había cubierto esto.
Hippo
Vaya, debería haber leído mejor. Pero no, no hay una mejor manera ...
Sean Freitag