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

4

Hay muchas preguntas en línea que preguntan cómo hacer que los comandos rsync y cp vayan a copiar un archivo manteniendo el atributo "fecha de creación" igual que el original en lugar del tiempo de copia. Entiendo que esta es información agregada de Mac y está separada del atributo "fecha de creación" del metadatos del archivo. De todos modos, mientras jugué con rsync -a , hizo todo lo que quería, excepto que, como todos los usuarios en línea anotaron, cambió la "fecha de creación" al momento 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 el tiempo de "fecha de creación" igual.

Aquí está mi pregunta: ¿Cómo es que Cmd - C Cmd - V mantiene el atributo de fecha de creación igual en la copia, pero ningún comando en el terminal dará este resultado? Si Cmd - C Cmd - V puede hacerlo, parece que tiene que haber algún comando en la Terminal que replica esto?

    
pregunta Adam 10.08.2015 - 08:20

3 respuestas

2

Como se indica, POSIX no define "fecha de creación" y las herramientas de línea de comandos están escritas en los estándares POSIX pero pueden extender los estándares. El comportamiento de rsync y cp es lo que se espera. Algunos sistemas de archivos y núcleos amplían los estándares e incluyen la hora de nacimiento o btime.

Suponiendo que está copiando archivos en el mismo sistema de archivos, OS X tiene herramientas que intentarán preservar la hora de nacimiento ("fecha de creación"). Podría usar los archivos pax o hardlink y la "fecha de creación" se conservará. Las herramientas menos confiables son ditto o cp con la opción p (al menos en mi sistema, sospecho errores en HFS +).

Si desea copiar archivos a otro sistema de archivos, debe compilar rsync con los parches fileflags, crtimes, hfs-compress y rsync puede manejar los metadatos de OS X y conservar la hora de nacimiento del archivo original en el nuevo archivo.

    
respondido por el fd0 10.08.2015 - 15:57
2

En 10.10.4, al usar cp -p / path / to / source / path / to / destination se conserva el tiempo creado. Más específicamente, en el Finder, se conservan fecha de creación y fecha de modificación , mientras que fecha agregada tendrá el tiempo de copia.

    
respondido por el samh 10.08.2015 - 16:10
1

Hay muchas razones por las que uno prefiere usar RSync en lugar de cp. La versión predeterminada de RSync en MacOS es 2.6.9, que tiene más de 12 años de antigüedad y tiene varios errores conocidos, y este es uno de ellos. Apple no incluirá las versiones actualizadas en las nuevas versiones de Mac OSX debido a cosas relacionadas con la GPL3.

Para solucionar este problema:

  1. Instala homebrew en tu Mac, si aún no lo tienes

      

    / usr / bin / ruby -e "$ (curl -fsSL enlace )"

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

      

    brew install rsync

  3. Certifique que su versión rsync es al menos 3.1.3:

      

    fabiosl @ macpro ~ $ rsync --version

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

      

    rsync -times --crtimes / sourcedirectory / destinationdirectory

respondido por el Fábio Leal 08.11.2018 - 04:52

Lea otras preguntas en las etiquetas