Příslušný požadavek lze řešit např. následujícím skriptem:
#! /bin/bash
OUTFILE="${2}"
FROM_DIR="${1}"
TEMP_OUTPUT="fsprint_tmpout.txt"
printCheckSum() {
if [ -f "${1}" ]; then
sha256sum "${1}"
fi
}
export -f printCheckSum
if [ -z "${FROM_DIR}" ]; then
echo "Specify a directory to start from"
fi;
if [ -z "${OUTFILE}" ]; then
echo "Specify a file to save the results to"
fi;
find "${FROM_DIR}" -type d \( -path /dev -o -path /proc -o -path /run -o -path /sys \) -prune -o -exec bash -c 'printCheckSum "{}"' \; 1>"${TEMP_OUTPUT}"
sort -k 2 -s ${TEMP_OUTPUT} 1>"${OUTFILE}"
rm "${TEMP_OUTPUT}"
Příklad použití jest třeba tento:
./fsprint.sh /home/madcat/VBoxShared fsout2.txt
kde první argument je adresář, od kterého dál se má fingerprint vytvořit. Druhý argument je soubor, kam se uloží výsledky.
Porovnání dvou výstupů se provede pomocí diffu
diff -u stary_vypis novy_vypis
Výsledek může vypadat následově:
4871aa90e699f3ad2182049e0a92d94592a2e9fb8c1c619721818d1b13c298d3 /home/madcat/VBoxShared/mpir.dll
7b886f2b41010f9808fa5906a1221287e6eded005dfc8f6fb97f1746ab9ea3ca /home/madcat/VBoxShared/nine_q.tar.xz
f375feb1f51e92fc6bd4c004b72c76c81053a6e4cd35c23cf1481e6eb8a2ee9e /home/madcat/VBoxShared/Peakmaster.dbc
-1c93005f404468457df2230e1918e75e3028bc60cc579845b528a14ab118d1d1 /home/madcat/VBoxShared/Peakmaster 5.3 Complex.exe
7739b98386e2d12486687f36b43c95a14cca14f4c241214b5babfc48fced76d0 /home/madcat/VBoxShared/plot_hvl.gp
07f67e35875d50b5c0357f52288de6ad806873356e9e1effcf953dac8fe3f362 /home/madcat/VBoxShared/qwt-6.1/admin/svn2package.sh
2342b1e6a9a5b2aa1e672122e909d458db76d79853ccb1aa8335acbde9f03183 /home/madcat/VBoxShared/qwt-6.1/build/designer/Makefile
@@ -21572,7 +21571,7 @@
0dfeefdcc20b80e9b35590d358699b8416c0e0ad5b57f47cb79e0521acb53f5f /home/madcat/VBoxShared/qwt-6.1/textengines/mathml/qwt_mml_document.h
521081001bea8f59b081c7e0078ca6dc3a4a7c733670f624d2bbd3977125bd15 /home/madcat/VBoxShared/qwt-6.1/textengines/textengines.pri
679386002ae6f9a0693bc6ac97c7f441e9c17ba487d8af793d9390a5c9b9043c /home/madcat/VBoxShared/qwt-6.1/textengines/textengines.pro
-1193112a469b14aa5c26a8cdeb3f2f7e80dcf3432cca2579ed155dabb12884dc /home/madcat/VBoxShared/recovery.evd
+25eddc393137556dbf4c7670678fcebf14544194a8839d6693c4e32ddd8cdfb3 /home/madcat/VBoxShared/recovery.evd
13a469804e5c6f6cd8fcb4d9b9f7186dd8bb0cd4873ee6afeeda39c654774441 /home/madcat/VBoxShared/usb_skelswitch.c
4f74cc1462729aa764a6746e2164abfb724acec26b1ae2652783a7a348dfabfb /home/madcat/VBoxShared/uuid.cpp
1af6946028ab7f932c2ede9c114c16ff746df4a83413653276b2119f1ef60f18 /home/madcat/VBoxShared/.vimrc
Z výstupu je vidět, že byl smazán soubor "Peakmaster 5.3 Complex.exe" a změněn obsah souboru "recovery.evd"
Skriptík je vymyšlen tak, aby neprohledával adresáře /dev, /proc, /run a /sys protože jejich obsah se generuje dynamicky, neukládá se nikam na disk a závisí třeba na tom, jaké jsou k počítači připojené periferie atp.
Stačí toto řešení?