Como copiar um arquivo no unix sem alterar o horário da última modificação?

71

Se eu copiar algum arquivo de algum lugar para outro usando cp , o registro de data e hora no arquivo copiado será definido para o horário da cópia.

Existe alguma maneira de evitar isso?

Eu preciso copiar arquivos sem alterar seus timestamps.

    
por Lazer 27.02.2010 / 12:13

4 respostas

84

cp -p faz o truque. Para Linux :

-p same as --preserve=mode,ownership,timestamps

Para o FreeBSD :

-p Cause cp to preserve the following attributes of each source file in the copy: modification time, access time, file flags, file mode, ACL, user ID, and group ID, as allowed by permissions.

E para o OS X :

-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 preserved.

    
por 27.02.2010 / 12:20
11

Existem três vezes em um sistema de arquivos Unix, o tempo de acesso (atime), o tempo de modificação (mtime) e o tempo de alteração do inode (ctime). Você pode alterar o tempo de acesso e a hora da modificação com o programa de toque, por exemplo

cp orig copy
touch -r orig copy

No entanto, você não pode alterar o tempo de alteração do inode.

    
por 27.02.2010 / 12:23
10

Ao usar cp do GNU Coreutils , para preservar apenas os registros de data e hora e não os atributos como ID do usuário, ID do grupo ou modo de arquivo, há a longhand --preserve , que permite especificar explicitamente uma lista de atributos a serem preservados.

cp --preserve=timestamps source destination

Lembre-se de que essa sintaxe provavelmente não é suportada em outros Unices. Uma alternativa poderia ser usar o parâmetro --times de rsync , que deve estar disponível na maioria das instalações.

    
por 09.06.2015 / 17:45
1

Recentemente, precisei fazer algo semelhante, mas usando o symlink. Para criar um link simbólico e preservar o registro de data e hora original: cp -ps src_file dst_symlink

    
por 21.07.2013 / 18:57