Ich speichere derzeit jeden Ordner in einer Hash-Datei mit dem folgenden Code
find folder/ -type f -exec sha256sum {} > checksumfolder.txt \;
Ich frage mich, ob es möglich ist, statt die TXT-Datei zu prüfen/neu zu berechnen und neu zu erstellen, einfach die alte TXT-Datei zu aktualisieren und die neu hinzugefügten Dateien hinzuzufügen, die keinen Hash haben?
Antwort1
Erstellen Sie eine Makefile
mit folgendem Inhalt:
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
Wenn Sie jetzt make
im übergeordneten Verzeichnis von ausführen, wird folder/
ein neues Verzeichnis erstellt, das die SHA256-Summe aller Dateien in enthält . Am Ende verketten wir alle Dateien in .sha/
folder/
checksumfolder.txt
Beim make
zweiten Ausführen geschieht nichts.
Wenn Sie eine Datei bearbeiten folder/
oder eine neue erstellen und ausführen, make
wird die SHA256-Summe dieser bestimmten Datei aktualisiert.
Um mehr über make
run zu erfahren info make
.
Wenn Sie eine Datei nie ändern (nur neue hinzufügen), können Sie sich einfach den Dateinamen mit der aktuellsten Änderungszeit beim letzten Ausführen des find
Befehls merken und nur die neueren Dateien mit folgendem Befehl auswählen:
find -newer REFERENCE_FILE
… oder ein direkter Zeitstempel (siehe date(1) DATE STRING) mit
find -newermt TIME_STAMP