Eu apenas sei disso ls -t
e ls -f
dou uma classificação diferente de arquivos e subdiretórios em um diretório.
- Quais são as diferenças entre carimbo de data e hora, hora da modificação e hora criada de um arquivo?
- Como obter e alterar esses tipos de informações por comandos?
- Em termos de que tipo de informação as pessoas dizem que um arquivo é "mais novo" que o outro?
- Que tipo de alteração de informações não tornará o arquivo diferente?
Por exemplo, vi alguém escrever:
Por padrão, o programa rsync procura apenas ver se os arquivos têm tamanho e carimbo de data / hora diferentes. Não importa qual arquivo é mais novo; se for diferente, ele será sobrescrito. Você pode passar o sinalizador '--update' para o rsync, o que fará com que ele ignore os arquivos no destino, se forem mais novos que o arquivo na fonte, mas apenas enquanto forem do mesmo tipo de arquivo. O que isso significa é que, por exemplo, se o arquivo de origem for um arquivo regular e o destino for um link simbólico, o arquivo de destino será substituído, independentemente do registro de data e hora.
Em uma nota lateral, o tipo de arquivo aqui significa apenas arquivo regular e simlink, não o tipo como pdf, jpg, htm, txt etc?
fonte
Respostas:
Existem 3 tipos de "timestamps":
Para exibir essas informações, você pode usar o
stat
que faz parte dos coreutils.stat
também mostrará mais algumas informações, como dispositivo, inodes, links etc.Lembre-se de que esse tipo de informação depende muito do sistema de arquivos e das opções de montagem. Por exemplo, se você montar uma partição com a
noatime
opção, nenhuma informação de acesso será gravada.Um utilitário para alterar os carimbos de data e hora seria
touch
. Existem alguns argumentos para decidir qual carimbo de data e hora alterar (por exemplo, -a para horário de acesso, -m para horário de modificação) e influenciar a análise de um novo carimbo de data / hora. Vejaman touch
para mais detalhes.touch
pode ser útil em combinação comcp -u
( "copiar somente quando o arquivo SOURCE for mais novo que o arquivo de destino ou quando o arquivo de destino estiver ausente" ) ou para a criação de arquivos de marcadores vazios.fonte
ls -l
. E o tipo de arquivo refere-se a arquivo versus link simbólico (ou outros tipos de arquivos, como diretórios ou dispositivos). Não é o tipo de dados no arquivo (texto x jpeg, etc).A resposta do echox é válida, mas quero adicionar informações sobre o tempo de criação do arquivo.
Suporte ao sistema de arquivos
Alguns sistemas de arquivos suportam uma entrada adicional no inode em relação à hora de criação (ou hora de nascimento). Eu sei que o ext4 suporta esse recurso e também JFS e BTRFS .
No entanto, a maioria das ferramentas e da API ainda não foram atualizadas para ler essas informações extras. Portanto, mesmo que possa estar lá, não é acessível.
Por exemplo, no Ubuntu 12.04 LTS, recebo o seguinte para um arquivo que criei hoje:
Você pode ver que a função stat mais recente possui um campo de nascimento, embora a saída pareça incorreta. E via debugfs, podemos obter as informações (crtime, como estou no sistema de arquivos ext4).
suporte statx
Agora, desde o Kernel 4.11, uma nova chamada de sistema statx , além de um melhor suporte ao Y2038 ou aos sistemas de arquivos de rede, ele também traz alguns recursos extras, como o acesso
btime
ou na hora do nascimento (hora da criação). O suporte ao ext4 deve estar na mesma versão 4.11 do kernel.Houve patches para adicionar suporte a este novo syscall em versões posteriores do Kernel: por exemplo, BTRFS e F2FS no Kernel 4.13, SMB3 em 4.14, GFS2 em 4.15, NFS em 4.16, etc.
A próxima glibc fornecerá uma chamada de função para consultar esta interface (consulte as notícias do Phoronix sobre o suporte à glibc statx ). Portanto, podemos esperar suporte para esse recurso no espaço do usuário em breve.
fonte