Actualizar el archivo hash al volver a verificar los archivos

Actualizar el archivo hash al volver a verificar los archivos

Actualmente estoy guardando cada carpeta en un archivo hash con el siguiente código

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

Me pregunto si es posible, en lugar de verificar/recalcular y recrear ese archivo txt, simplemente actualizar el archivo txt antiguo y agregar los archivos recién agregados que no tienen hash.

Respuesta1

Crea un Makefilecon el siguiente contenido:

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

Cuando ejecute ahora makedentro del directorio principal de , se creará folder/un nuevo directorio que contendrá el sha256sum de cada archivo en . Al final concatenamos todos los archivos en .sha/folder/checksumfolder.txt

Cuando lo ejecutes makepor segunda vez, no se hará nada.

Cuando tocas un archivo folder/o creas uno nuevo y ejecutas, makeel sha256sum de este archivo específico se actualiza.

Para obtener más información sobre makeejecutar info make.


Si nunca cambia un archivo (solo agrega archivos nuevos), simplemente puede recordar el nombre del archivo con la hora de modificación más reciente cuando ejecutó el findcomando por última vez y seleccionar solo los archivos más nuevos con:

find -newer REFERENCE_FILE

… o una marca de tiempo directa (ver fecha(1) DATE STRING) con

find -newermt TIME_STAMP

información relacionada