hash value on directory

10,902

Solution 1

For a list of md5sums:

find /path/to/dir/ -type f -exec md5sum {} \;

And for an overall md5 checksum:

find /path/to/dir/ -type f -exec md5sum {} \; | md5sum

Example output:

b2d5d3a5e102aae48eb6ff36c602ac75  -

Notice, at a folder with huge size, it can take very long.

Solution 2

Install md5deep with

sudo apt-get install md5deep

The command

md5deep -r {direcotory}

you will get a hash based on all the files in the directory. You can also use md5deep to compare hashes of the files in the dir.

Solution 3

I created dir-fingerprint that can be used to solve that. It creates fingerprint/hash for all the files in directory tree and saves it in a file, also telling you if the fingerprint has changed.

It can be installed with:

$ brew install nejckorasa/tap/dir-fingerprint

and used as:

$ dir-fingerprint <path_to_directory>

with output:

Old     [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
New     [8a7b73f9671004edd50500bc7d3f1837d841a5c086011207259eb2d183823adf]
@       <path_to_directory>/.fingerprint
Diff    false

and .fingerprint file created

Share:
10,902

Related videos on Youtube

user3734225
Author by

user3734225

Updated on September 18, 2022

Comments

  • user3734225
    user3734225 almost 2 years

    I want to verify integrity of folder. The folder has so many files and folders. How to calculate hash value of directory as a whole on Ubuntu. md5sum calculate at only file level.

  • Dante
    Dante over 7 years
    Notice md5sum prints the filenames alongside md5 hashes. So the path of both directories must be the same for an overall md5 checksum. So change the current directory to the one you want the md5 checksum for that and use find . -type f -exec md5sum {} \; | md5sum or delete filenames before using md5sum by find /path/to/dir/ -type f -exec md5sum {} \; | awk '{ print $1 }' | md5sum.
  • Dante
    Dante over 7 years
    I am using 16.04. After sudo apt-get install md5deep done, I get md5deep: command not found!
  • user68186
    user68186 over 6 years
    In Ubuntu 16.04 md5deep is «transitional dummy package for hashdeep». So you must use: hashdeep -r {directory}. (Try first hashdeep -h to see all options.)
  • tolache
    tolache over 3 years
    md5deep -r {direcotory} | md5deep helped me
  • motilio
    motilio over 3 years
    just tried, works great!