Ось моя проблема: мені потрібно архівувати для tar-файлів багато (до 60 ТБ) великих файлів (зазвичай від 30 до 40 ГБ кожен). Я хотів би зробити контрольні суми (md5, sha1, що завгодно) цих файлів перед архівуванням; однак не читання кожного файлу двічі (один раз для контрольної суми, два рази для тарінгу) - це більш-менш необхідність для досягнення дуже високої продуктивності архівації (LTO-4 хоче підтримувати 120 Мб / с, а вікно резервного копіювання обмежене).
Тож мені знадобиться якийсь спосіб прочитати файл, подати інструмент контрольної суми з одного боку та створити дьоготь для стрічки з іншого боку, щось поряд:
tar cf - files | tee tarfile.tar | md5sum -
За винятком того, що я не хочу контрольної суми всього архіву (цей зразок коду оболонки робить саме це), а контрольної суми для кожного окремого файлу в архіві.
Я вивчив варіанти GNU tar, Pax, Star. Я подивився джерело з Архів :: Tar . Я не бачу очевидного способу цього досягти. Схоже, мені доведеться скласти щось на C або подібному, щоб досягти того, що мені потрібно. Perl / Python / і т.д. просто не знижуватимуть її ефективність, а різні програми tar вимагають необхідної "архітектури плагінів". Хтось знає про якесь існуюче рішення цього рішення, перш ніж я розпочну шифрування коду?
7z
ви можете вибрати хеш і надрукувати його таким чином , що sha1sum
і sha256sum
можна зрозуміти: 7zip.bugaco.com/7zip/7zip_15_09/MANUAL/cmdline/commands / ... (і sami-lehtinen.net/blog / ... ) Спробуйте: 7z h -scrcsha256 mydir/* | sed --regexp-extended 's, +[0-9]+ +, ,g' > mydir.sha256sum ; sha256sum -c mydir.sha256sum
(тестовано на версії p7zip версії 15.09 бета)
tar
якщо ви вирішите його написати;)