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 Makefile
con 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 make
dentro 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 make
por segunda vez, no se hará nada.
Cuando tocas un archivo folder/
o creas uno nuevo y ejecutas, make
el sha256sum de este archivo específico se actualiza.
Para obtener más información sobre make
ejecutar 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 find
comando 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