quarta-feira, 27 de janeiro de 2010

Mostrando e alterando os MAC times dos arquivos no Linux

Os Mac times são partes dos metadados do sistema de arquivos onde são registrados certos eventos, ocorridos mais recentemente, relacionados a um arquivo. Os eventos são geralmente descritos como "modification" (a data em que o arquivo foi modificado), "access" (a data em que o arquivo foi lido) e "metadata change" (a data em que as permissões do arquivo foram alteradas). São estes termos "mtime", "atime" e "ctime" que derivam para o acrônimo MAC.

Estes são os eventos tradicionais no sistema de arquivos do Unix, onde o "ctime" é tido como a mudança nos metadados, para as permissões. Os sistemas Windows são os únicos sistemas que usam o "ctime" para significar data de criação do arquivo, diferentemente do adotado em sistemas Unix. Entretanto, o sistema de arquivos NTFS possui além dos eventos de modificação, acesso e criação, também possui o evento "Entry Modified", que registra a data de uma alteração na tabela MFT relacionada ao arquivo. A MFT é uma tabela localizada no início do sistema de arquivos na qual são armazenadas informações como datas, nomes, tamanho e localização dos arquivos. Estes quatro eventos são comumente abreviados como valores "MACE".

O comando stat, do pacote coreutils, é capaz de mostrar o status de um arquivo. Veja um exemplo de uma saída do comando stat. As três últimas linhas são as que trazem os MAC times:

$ stat .bash_history

File: `.bash_history'
Size: 50427 Blocks: 112 IO Block: 4096 arquivo comum
Device: 803h/2051d Inode: 2269552 Links: 1
Access: (0600/-rw-------) Uid: ( 500/ usuario) Gid: ( 500/ grupo)
Access: 2010-01-27 13:43:14.000000000 -0200
Modify: 2010-01-27 08:03:35.000000000 -0200
Change: 2010-01-27 08:03:35.000000000 -0200


O comando touch, também do pacote coreutils, é capaz de alterar a data dos eventos. Seguindo a sintaxe "touch [OPÇÃO] ARQUIVO" usa-se a opção "-a" para alterar a data de acesso e a opção "-m" para alterar a data de modificação. Para especificar a data pode-se usar em conjunto a opção "-t CCYYMMDDhhmm.ss". O comando touch não é capaz de alterar o evento "ctime".

Com as informações dos MAC times é possível, por exemplo, um aplicativo elaborar uma linha do tempo, com os acessos e modificações, dos arquivos contidos em uma unidade de armazenamento.

Nenhum comentário:

Postar um comentário