Я ищу способ вычисления значения sha-256 для каждого файла, содержащегося в файле tar. Проблема в том, что tar составляет 300 ГБ с более чем 200 000 содержащихся файлов.Как вычислить shasum каждого файла в tar-файле
Можно было бы сделать это в bash несколькими разными способами.
экстракт, а затем использовать find
tmp=`mktmp --directory extract_XXX`
cd "$tmp"
tar -xf "$tarfile"
find "$tmp" -type f -exec shasum -ba 256 {} +
cd ..
rm -rf "$tmp"
Этот метод плох, потому что он требует 300GB пространства пространства для работы и медленно, потому что он должен скопировать данные до вычисления суммы
Показать файл tar и вычислить отдельные суммы
tar -tf "$tarfile" awk '/\/$/ {next} {print $0}' | while read file ; do
sum=`tar -xOf "$tarfile" "$file" | shasum -ba 256`
echo "${sum%-}${file}"
done
Это требует меньше места на диске, но гораздо медленнее
Как я могу сделать это за один проход файла дегтя без извлечения его во временную директорию?
Я отметил это как bash и python ... Текущий код bash, но я гибкий в отношении языка.