NOTA: Esta não é uma resposta direta à sua pergunta, ao contrário, é uma resposta à óbvia pergunta de acompanhamento " Como eu detecto se um arquivo realmente mudou se não posso confiar no timestamp? "
Se você precisar verificar se o conteúdo de um arquivo (e não apenas seu registro de data e hora) foi alterado, será necessário comparar o conteúdo atual com o conteúdo anterior. Por exemplo, em sh
:
Executando uma comparação byte a byte com cmp
:
if [ -e "$oldcopy" ] && cmp -s "$oldcopy" "$currentcopy" ; then
# do whatever needs doing if the file hasn't changed
else
# first do whatever needs doing if the file is new or has changed
# then make a copy of the current file
cp -af "$currentcopy" "$oldcopy"
fi
Usando checksums aka hashes aka message digests com md5sum
:
if [ -e "$filename.md5sum" ] && md5sum --status "$filename.md5sum)" ; then
# do whatever needs doing if the file hasn't changed
else
# first do whatever needs doing if the file is new or has changed
# then save an md5sum of the current file
md5sum "$filename" > "$filename.md5sum"
fi
md5sum
usa mais energia da CPU para gerar o resumo da mensagem para o arquivo. cmp
usa mais espaço em disco para fazer uma segunda cópia completa do arquivo.
Qualquer outra ferramenta de digestão (por exemplo, sha512
) pode ser usada em vez de md5sum
, se necessário ... e provavelmente deve ser se houver alguma implicação de segurança se os arquivos forem diferentes.
O Java, como muitos outros idiomas, possui bibliotecas para realizar cálculos de resumo de mensagens.