Estoy interesado en combinar los archivos de tres Mac copiando los archivos de cada uno en una sola jerarquía de carpetas de mi diseño en un disco duro externo.
En mi experiencia anterior al copiar archivos en OSX, a veces los archivos pierden sus marcas de tiempo Creado y Modificado; es decir, se cambian al momento presente cuando ocurre la copia del archivo.
¿Cómo puedo asegurarme de que esto no suceda?
Me encontré con esto yo mismo, y el cp
comando incorporado realmente lo maneja.
Descubrí un montón de viejas tarjetas CF de las que quería recolectar las imágenes. Mis scripts de procesamiento mirarán el archivo mtime para colocarlo en el lugar correcto, por lo que necesitaba conservarlo.
De la página del 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.
Entonces, usando zsh
pude ejecutar ( NO NAME
siendo 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
cp -p
es sencillo, conserva la hora modificada (probablemente la más útil de las tres marcas de tiempo en un archivo) y no requiere la creación de un archivo intermedio.cp -p
Sin embargo, no funciona al copiar de HFS+ a FAT32.Yo uso rsync para hacer este tipo de copia. Sin embargo, tenga en cuenta que la versión proporcionada por Apple es 2.6.9 y tiene errores. Por lo tanto, necesita que un tercero construya uno, ya sea que lo construya usted mismo o mediante un administrador de paquetes.
por ejemplo
rsync -aEAX source_dir target_dir
La opción -E
copia las ACL y -a
conserva los permisos y tiempos de Unix A copia las ACL y X copia los atributos x (onm rsyn versión 3. La versión 2 no tiene AX)
rsync
también se puede configurar para copiar a máquinas remotas sin necesidad de montar unidades.
Hay algunas interfaces gráficas de usuario para rsync, por ejemplo , aRsync . Para otras herramientas de sincronización de directorios, consulte esta pregunta .
rsync
es una buena solución, pero tenga en cuenta que no conserva los tiempos de acceso. pax
(ver mi respuesta a continuación) lo hace.man rsync
y busque preserve times
:) ⇒ la respuesta de Mark es correcta.-t
. El error probablemente también esté presente en Mavericks y Yosemite.uso pax
_ El formato predeterminado pax
, llamado ustar , conserva la modificación de archivos 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 pax
página del manual aquí para obtener más detalles.
Primero, cree un pax
archivo en cada Mac y cópielo en el disco duro externo de esta manera:
Escriba en Terminal:
$ cd
y arrastre la carpeta donde residen los archivos que se combinarán en esa Mac a la Terminal:
Alternativamente, puede escribir el nombre completo de la carpeta:
$ cd /path/to/your\ folder
Esto cambiará la carpeta actual a 'su carpeta'.
Archivar la carpeta con pax
:
$ cd ..
$ pax -w "your folder" > yourfolder.ustar
Utilice el Finder para copiar el archivo recién creado yourfolder.ustar
en el disco duro externo.
Luego extraiga los archivos con pax
:
Abra Terminal en la Mac que tiene el disco duro USB externo conectado.
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
Extraiga 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
Mueva los archivos con el Finder si es necesario (el Finder conserva la modificación de archivos y los tiempos de acceso dentro del mismo volumen).
(He probado este procedimiento en OS X 10.8 (Mountain Lion).)
Comprímalos con zip o selecciónelos con ctrl-clic o clic derecho y elija Comprimir. Copie los archivos comprimidos en su sistema de destino y ábralos allí.
Si puede, formatee su unidad externa como un sistema de archivos Mac OS, no como FAT.
Probé lo que jaume sugirió anteriormente (¡gracias jaume!), pero para mí (en mi hardware muy antiguo) crear archivos .ustar me llevó demasiado tiempo y se me acabó la paciencia... horas después.
Así que leí los ejemplos aquí y adapté un ejemplo así:
pax -r -u -w [source directory] [destination directory]
En mi caso, cambié el directorio con el comando 'cd' y comprobé que la terminal podía ver mi directorio de origen 'Usuario' con el comando 'ls' antes de ejecutar:
pax -r -u -w User /Volumes/T7
Los resultados fueron que todos los archivos mantuvieron su fecha original de modificación/creación, pero los directorios tenían "hoy" como fecha de modificación y fecha original para "fecha de creación".
¡Esto fue lo suficientemente bueno para mí!
PD: no estoy seguro de si pax está integrado en Darwin, ya que instalé TigerBrew antes de comenzar, pero hice todo esto en OS X 10.7.5.
¿Puede conservar las marcas de tiempo del directorio para la fecha de creación, la fecha de modificación y la fecha de acceso desde mac os o linux a windows 10?
izq.
Gerry