8 votos

¿Cómo mantener la "fecha de creación" original al copiar a través de la Terminal?

Hay muchas preguntas en línea sobre cómo hacer los comandos rsync y cp ir sobre la copia de un archivo manteniendo el atributo "fecha de creación" igual que el original en lugar de la hora de la copia. Entiendo que esta es la información añadida de Mac y es independiente de la del archivo metadatos atributo "fecha de creación". De todos modos, mientras jugaba con rsync -a , hizo todo lo que quería excepto, como todo el mundo apunta en Internet, que cambió la "fecha de creación" a la hora de la copia en lugar de la marca original. Con rsync y cp cambia debido a "un cambio en el inodo" . Command-c command-v, sin embargo, mantiene la misma hora de "fecha de creación".

Esta es mi pregunta: ¿Cómo es que Cmd - C Cmd - V mantiene el atributo de fecha de creación igual en la copia, y sin embargo ningún comando en el terminal da este resultado? Si Cmd - C Cmd - V puede hacerlo, parece que tiene que haber algún comando en el Terminal que replique esto?

0 votos

¿Dónde has comprobado si las fechas cambian o permanecen igual, en Terminal o en Finder? Como se puede verificar fácilmente usando stat -s , incluso los cambios Cmd-C/Cmd-V ctime y ctime información, así que ¿qué marcas de tiempo quieres que permanezcan igual aquí?

0 votos

Si XCode está instalado Getfilinfo file devuelve la información del archivo. Ver developer.apple.com/library/mac/documentation/Darwin/Reference/

1 votos

'NIX no tiene un atributo de "fecha de creación" (a diferencia de Windows). st_ctime en el struct stat registra realmente la última vez que el inodo cambió. OS X 64 bit tiene st_birthtimespec; /* time of file creation(birth) */ pero acceder a ella no es sencillo.

5voto

Robru Puntos 584

En 10.10.4, utilizando cp -p /ruta/al/fuente /ruta/al/destino el tiempo creado se conserva. Más concretamente, en Finder, fecha de creación y fecha de modificación se conservan, mientras que fecha añadida tendrá la hora de la copia.

0 votos

Creo que cp -a puede sustituir -p ya que también copiará un árbol de directorios.

0 votos

No funciona en 10.14 Mojave. La fecha de modificación se copia a la fecha de creación del nuevo archivo. [Lo mismo para cp & ditto ]

5voto

Fábio Leal Puntos 31

Hay muchas razones por las que uno prefiere usar RSync en lugar de cp. La versión por defecto de RSync en MacOS es la 2.6.9, que tiene más de 12 años a día de hoy, y tiene varios errores conocidos, y este es uno de ellos. Apple no incluye las versiones actualizadas en los nuevos lanzamientos del Mac OSX debido a cosas relacionadas con la GPL3.

Para abordar esta cuestión:

  1. Instala homebrew en tu Mac, si no lo tienes ya

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )"

  2. Instala la nueva versión de rsync disponible en brew:

    brew install rsync

  3. Certifica que tu versión de rsync es al menos la 3.1.3:

    fabiosl@macpro ~ $ rsync --version

  4. Copie sus archivos utilizando las opciones --times y --crtimes

    rsync -times --crtimes /directorio de origen /directorio de destino

0 votos

Creo que esto debería ser --times y no -times .

2voto

Michael Zhou Puntos 167

Como se ha dicho, POSIX no define la "fecha de creación" y las herramientas de línea de comandos se escriben según los estándares de POSIX, pero pueden ampliarlos. El comportamiento de rsync y cp es el esperado. Algunos sistemas de archivos y kernels extienden los estándares e incluyen birthtime o btime.

Asumiendo que estás copiando archivos en el mismo sistema de archivos, OS X tiene herramientas que intentarán preservar la hora de nacimiento ("fecha de creación"). Puede utilizar pax o hardlink archivos y se conservará la "fecha de creación". Las herramientas menos fiables son ditto o cp con el p (al menos en mi sistema, sospecho que hay errores en HFS+).

Si quieres copiar archivos a otro sistema de archivos, entonces necesitas compilar rsync con los parches fileflags, crtimes, hfs-compression y rsync puede manejar los metadatos de OS X y preservar el tiempo de nacimiento del archivo original en el nuevo archivo.

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