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 Makefile
com 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 make
dentro 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 make
uma segunda vez, nada será feito.
Quando você toca em um arquivo folder/
ou cria um novo e executa make
o sha256sum deste arquivo específico é atualizado.
Para saber mais sobre make
executar 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 find
comando 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