Atualizar arquivo hash ao verificar novamente os arquivos

Atualizar arquivo hash ao verificar novamente os arquivos

Atualmente estou salvando cada pasta em um arquivo hash com o seguinte código

find folder/ -type f -exec sha256sum {} > checksumfolder.txt \;

Estou me perguntando se é possível, em vez de verificar/recalcular e recriar esse arquivo txt, apenas atualizar o arquivo txt antigo e adicionar os arquivos recém-adicionados que não possuem hash.

Responder1

Crie um Makefilecom o seguinte conteúdo:

SHAS := $(patsubst folder/%, sha/%, $(shell find folder/ -type f))

all: sha $(SHAS) checksumfolder.txt

sha:
    mkdir sha

sha/%: folder/%
    sha256sum $< > $@

checksumfolder.txt: $(SHAS)
    cat $(SHAS) > checksumfolder.txt

Quando você executar makedentro do diretório pai de folder/, um novo sha/diretório será criado contendo o sha256sum de cada arquivo em folder/. No final concatenamos todos os arquivos em checksumfolder.txt.

Quando você executar makeuma segunda vez, nada será feito.

Quando você toca em um arquivo folder/ou cria um novo e executa makeo sha256sum deste arquivo específico é atualizado.

Para saber mais sobre makeexecutar info make.


Se você nunca alterar um arquivo (apenas adicionar novos), você pode simplesmente lembrar o nome do arquivo com a hora da modificação mais recente quando executou o findcomando pela última vez e selecionar apenas os arquivos mais recentes com:

find -newer REFERENCE_FILE

… ou um carimbo de data/hora direto (veja date(1) DATE STRING) com

find -newermt TIME_STAMP

informação relacionada