Os carimbos de data e hora podem ser preservados ao copiar arquivos no OS X?


14

Estou interessado em combinar os arquivos de três Macs, copiando os arquivos de cada um em uma única hierarquia de pastas do meu design em um disco rígido externo.

Na minha experiência anterior, copiando arquivos no OSX, às vezes os arquivos perdem os carimbos de data e hora criados e modificados; ou seja, eles são alterados para o momento atual em que a cópia do arquivo acontece.

Como posso garantir que isso não aconteça?


Quando você perde carimbos de data e hora?
lhf 31/01

Copiando-os como?
Gerry

Respostas:


11

Eu mesmo me deparei com isso, e o cpcomando interno realmente lida com isso.

Descobri vários cartões CF antigos dos quais queria colher as fotos. Meus scripts de processamento examinarão o arquivo mtime para colocá-lo no local correto, então eu precisava dele preservado.

Na página do 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.

Então, usando zsheu era capaz de executar ( NO NAMEsendo o nome do volume dos meus cartões):

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

Eu acredito que a /**/*construção especial é específica para ZSH; no entanto, você poderia fazer algo como

find /Volumes/WHATEVER -type d -print0 | xargs cp -vp {}/*.JPG /my/out/path

+1 Um simples cp -pé direto, preserva o horário modificado (provavelmente o mais útil dos três carimbos de data e hora em um arquivo) e não requer a criação de um arquivo intermediário.
wberry

1
Até onde eu sei, "cp -p" esquece a data de criação e a define como a data de modificação. O que é um comportamento bastante absurdo.
Nicolas Barbulesco

1
cp -pnão funciona ao copiar do HFS + para o FAT32.
NobleUplift 06/03/19

9

Eu uso o rsync para fazer esse tipo de cópia. No entanto, observe que a versão fornecida pela Apple é 2.6.9 e possui bugs. Portanto, você precisa ter um terceiro construído por conta própria ou por meio de um gerenciador de pacotes

por exemplo

rsync -aE source_dir target_dir

A opção -Ecopia as ACLs e -apreserva as permissões e os horários do unix. (bem, ele fez no rsync 2 rsync 3 parece precisar -AX)

rsync também pode ser configurado para copiar para máquinas remotas sem montar unidades.

Existem alguns front-ends da GUI para rsync, por exemplo, aRsync . Para outras ferramentas de sincronização de diretório, consulte esta pergunta .


rsyncé uma boa solução, mas lembre-se de que não preserva os tempos de acesso. pax(veja minha resposta abaixo) sim.
jaume

1
Até onde eu sei, o "rsync" esquece a data de criação e a define como a data de modificação. O que é um grande fracasso.
Nicolas Barbulesco

→ jaume: qualquer comando que faça qualquer forma de cópia de "arquivo a" em direção a "arquivo b" deve ler primeiro "arquivo a". Portanto, o tempo de acesso do "arquivo a" deve ser modificado. Este não é um recurso no nível do comando, mas no nível do kernel. Se um comando, por meio de outra chamada do sistema, restaura o tempo de acesso ao estado anterior, esse é um truque perigoso, porque é uma mentira simples .
dan

→ Nicolas: cf. man rsynce pesquise preserve times:) ⇒ a resposta de Mark está correta.
dan

1
→ Mark, @daniel - Acabei de testar o rsync no Mac OS X 10.6.8. Uma cópia local de uma pasta com "rsync -rt" esquece a data de criação dos arquivos e a substitui pela data de modificação. Apesar do manual para "rsync" dizendo "preserve times" para a opção -t. O bug provavelmente está presente no Mavericks e no Yosemite também.
Nicolas Barbulesco 10/09

4

Use pax. O paxformato padrão , chamado ustar , preserva a modificação do arquivo e os tempos de acesso (entre outras coisas, como ID do usuário, ID do grupo, bits do modo de arquivo e atributos estendidos, como comentários do Spotlight e ACLs). Veja a paxpágina de manual aqui para mais detalhes.

Primeiro, crie um paxarquivo em cada Mac e copie-o para o disco rígido externo como este:

  1. Abra Aplicativos> Utilitários> Terminal.
  2. Digite Terminal:

    $ cd
    

    e arraste a pasta onde os arquivos a serem combinados residem nesse Mac para o Terminal:

    insira a descrição da imagem aqui

    Como alternativa, você pode digitar o nome completo da pasta:

    $ cd /path/to/your\ folder
    

    Isso mudará a pasta atual para 'sua pasta'.

  3. Arquive a pasta com pax:

    $ cd ..
    $ pax -w "your folder" > yourfolder.ustar
    
  4. Use o Finder para copiar o arquivo recém-criado yourfolder.ustarpara o disco rígido externo.

Em seguida, extraia os arquivos com pax:

  1. Abra o Terminal no Mac com o disco rígido USB externo conectado.

  2. Altere a pasta atual para a hierarquia de pastas únicas no disco rígido externo com o comando cdexplicado acima:

    $ cd /Volumes/externalHDD/path/to/single \folder
    $ ls
    yourfolder.ustar
    yourfolder2.ustar
    yourfolder3.ustar
    
  3. Extraia os arquivos:

    $ 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. Mova os arquivos com o Finder, se necessário (o Finder preserva a modificação do arquivo e os tempos de acesso no mesmo volume).

(Testei este procedimento no OS X 10.8 (Mountain Lion).)


1
Não funciona para nomes de arquivos mais de 200 caracteres community.hpe.com/t5/Ignite-UX/...
amleszk

0

Compacte-os com zip ou selecione-os com a tecla Ctrl ou clique com o botão direito do mouse e escolha Compactar. Copie os arquivos compactados para o sistema de destino e abra-os lá.

Se possível, formate sua unidade externa como um sistema de arquivos do Mac OS, não como FAT.


Não clique em Option. Clique com a tecla Ctrl pressionada. Ou clique com o botão direito do mouse.
Nicolas Barbulesco

1
A melhor opção para formatar o disco é o Mac OS Extended Journalled. O Mac OS Extended também é chamado de HFS +.
Nicolas Barbulesco
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.