Вот моя проблема: мне нужно архивировать в tar-файлы много (до 60 ТБ) больших файлов (обычно от 30 до 40 ГБ каждый). Я хотел бы сделать контрольные суммы (md5, sha1, что угодно) из этих файлов перед архивированием; однако, не считывание каждого файла дважды (один раз для контрольной суммы, два раза для tar'ing) более или менее необходимо для достижения очень высокой производительности архивирования (LTO-4 хочет поддерживать 120 МБ / с, а окно резервного копирования ограничено).
Поэтому мне понадобится какой-нибудь способ прочитать файл, подать инструмент проверки контрольных сумм с одной стороны и создать tar-ленту на другой стороне, что-то вроде:
tar cf - files | tee tarfile.tar | md5sum -
За исключением того, что я не хочу контрольную сумму всего архива (этот пример кода оболочки делает только это), но контрольную сумму для каждого отдельного файла в архиве.
Я изучал GNU tar, Pax, Star варианты. Я посмотрел на источник из архива :: Tar . Я не вижу очевидного способа добиться этого. Похоже, мне придется собрать что-то вручную в C или подобном, чтобы достичь того, что мне нужно. Perl / Python / etc просто не снизит производительность, а различные программы 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
(протестировано с версией 15.09 p7zip)
tar
если вы решите написать это;)