¿Se pueden conservar las marcas de tiempo al copiar archivos en OS X?

13

Estoy interesado en combinar los archivos de tres Macs copiando los archivos de cada uno en una única jerarquía de carpetas de mi diseño en un disco duro externo.

En mi experiencia pasada al copiar archivos en OSX, a veces los archivos pierden sus marcas de tiempo creadas y modificadas; es decir, se cambian al momento presente cuando ocurre la copia del archivo.

¿Cómo puedo asegurarme de que esto no suceda?

    
pregunta themirror 30.01.2013 - 20:23

4 respuestas

9

Yo mismo lo encontré y el comando cp integrado realmente lo maneja.

Descubrí un montón de tarjetas CF antiguas de las que quería recoger las imágenes. Mis scripts de procesamiento verán el archivo mtime para colocarlo en el lugar correcto, por lo que necesité conservarlo.

De la página de manual :

 -p    Cause cp to preserve the following attributes of each source file in the copy: modification time,
       access time, file flags, file mode, user ID, and group ID, as allowed by permissions.  Access
       Control Lists (ACLs) and Extended Attributes (EAs), including resource forks, will also be pre-
       served.

       If the user ID and group ID cannot be preserved, no error message is displayed and the exit value
       is not altered.

       If the source file has its set-user-ID bit on and the user ID cannot be preserved, the set-user-
       ID bit is not preserved in the copy's permissions.  If the source file has its set-group-ID bit
       on and the group ID cannot be preserved, the set-group-ID bit is not preserved in the copy's per-
       missions.  If the source file has both its set-user-ID and set-group-ID bits on, and either the
       user ID or group ID cannot be preserved, neither the set-user-ID nor set-group-ID bits are pre-
       served in the copy's permissions.

Por lo tanto, al usar zsh pude ejecutar ( NO NAME es el nombre del volumen de mis tarjetas):

cp -rvp /Volumes/NO\ NAME/DCIM/**/*.{JPG,jpg} ~/Desktop/tmp/pics

Creo que la construcción especial /**/* es específica de ZSH; Sin embargo, podrías hacer algo como

find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path
    
respondido por el Andrew Burns 22.06.2013 - 15:50
9

Utilizo rsync para hacer esto tipo de copia Sin embargo, tenga en cuenta que la versión suministrada por Apple es 2.6.9 y tiene errores en esto. Por lo tanto, necesita obtener un tercero creado, ya sea usted mismo o mediante un administrador de paquetes

por ejemplo

rsync -aE source_dir target_dir

La opción -E copia las ACL y -a conserva los permisos y tiempos de Unix. (bueno, lo hizo en rsync 2 rsync 3 parece necesitar -AX)

rsync también se puede configurar para copiar en máquinas remotas sin montar unidades.

Hay algunos front-end GUI para rsync, por ejemplo. aRsync . Para otras herramientas de sincronización de directorios, vea esta pregunta .

    
respondido por el Mark 31.01.2013 - 13:38
4

Utilice pax . El formato predeterminado pax , llamado ustar , preserva la modificación del archivo y los tiempos de acceso (entre otras cosas como ID de usuario, ID de grupo, bits de modo de archivo y atributos extendidos como comentarios de Spotlight y ACL). Consulte la página de manual de pax aquí para obtener más información detalles.

Primero, crea un archivo pax en cada Mac y cópialo en el disco duro externo de esta manera:

  1. Aplicaciones abiertas > Utilidades > Terminal.
  2. Escriba en la Terminal:

    $ cd
    

    y arrastre la carpeta donde residen los archivos que se combinarán en esa Mac a la Terminal:

    Alternativamente,puedesescribirelnombrecompletodelacarpeta:

    $cd/path/to/your\folder

    Estocambiarálacarpetaactuala"su carpeta".

  3. Archivar la carpeta con pax :

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. Use el Finder para copiar el archivo creado recientemente co yourfolder.ustar en el disco duro externo.

Luego extraiga los archivos con pax :

  1. Abre el Terminal en la Mac que tiene el disco duro externo USB conectado.

  2. Cambie la carpeta actual a la jerarquía de una sola carpeta en el disco duro externo con el comando cd como se explicó anteriormente:

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
    
  3. Extraer los archivos:

    $ pax -r -p e < yourfolder.ustar
    $ pax -r -p e < yourfolder2.ustar
    $ pax -r -p e < yourfolder3.ustar
    $ ls
    your folder
    your folder 2
    your folder 3
    
  4. Mueva los archivos con el Finder si lo necesita (el Finder conserva la modificación de los archivos y los tiempos de acceso dentro del mismo volumen).

(He probado este procedimiento en OS X 10.8 (Mountain Lion).)

    
respondido por el jaume 31.01.2013 - 11:17
0

Comprímalos con zip o selecciónelos con ctrl-click o clic derecho y elija Compress. Copie los archivos comprimidos en su sistema de destino y ábralos allí.

Si puede, formatee su unidad externa como un sistema de archivos de Mac OS, no FAT.

    
respondido por el lhf 31.01.2013 - 12:04

Lea otras preguntas en las etiquetas