Я давно хотел следить за своим хранилищем файлов и наблюдать за файлами, которые со временем повреждены.
С этой целью я пытаюсь написать Linux bash Скрипт / shell, чтобы пройти через каталог и создать файл хеш-суммы MD5 для каждого файла, в том же каталоге, что и каждый файл. Я не фанат иметь один файл, который содержит все хэши, потому что он все упадет, если этот единственный файл когда-либо будет поврежден или потерян.
- Directory 1
- TestFile.txt
- TestFile.txt.md5
- AnotherTestFile.wav
- AnotherTestFile.wav.md5
- Directory 2
- MyDetails.docx
- MyDetails.docx.md5
Я пытался использовать команда md5sum
различными способами, но она всегда хочет:
- Создать все хэши в одном файле.
- Создать отдельный .md5 га sh файлы для каждого файла, но имена файлов в файле md5 ha sh содержат полный путь к файлу (например,
./Documents/Directory1/TestFile.txt
), а не только имя файла (например, TestFile.txt
).
У меня есть инструмент на Windows, который делает это (MD5Checker
), но он хэширует файлы на моем файловом сервере по сети. Я бы предпочел что-то, что может работать на операционной системе Linux.
Есть мысли?
Моя последняя попытка (я знаю, что это плохо)
Это создает MD5 файл, но путь к файлу в файле хэш-суммы - это полный путь к файлу, а не путь к базовому файлу.
#!/bin/bash
function md5_dir {
for file in $1/*;
do
if [[ -f "$file" && ! $file == *.md5 ]];
then
file_basename=$(basename "$file");
echo "$file" "$file_basename";
md5sum "$file" > "$file.md5";
fi;
if [[ -d "$file" ]];
then
md5_dir $file
fi;
done;
}
echo "$1"
md5_dir "$1";