Perl имеет base64 модуль (в основном распределении с тех пор 5.7.1).
echo foo | sha1sum | \
perl -MMIME::Base64 -ne '/^([[:xdigit:]]+)/ and print encode_base64(pack("H*",$1))'
Если Вы имеете Digest::SHA
модуль (в основном распределении с тех пор 5.9.3), или более старое Digest::SHA1
модуль, можно сделать целое вычисление в жемчуге. С жемчуга 5.10.1, b64digest
не заполняет вывод base64; если Вам нужно дополнение самого легкого пути, должен использовать MIME::Base64
.
perl -MDigest::SHA -e 'print Digest::SHA->new(1)->addfile(*STDIN)->b64digest'
perl -MMIME::Base64 -MDigest::SHA \
-le 'print encode_base64(Digest::SHA->new(1)->addfile(*STDIN)->digest)'
Метаданные являются информацией о данных. Если Вы думаете о текстовом файле, последовательности букв, что текстовый файл является фактическими данными, которые содержит файл. Однако файл имеет имя, владельца, дату создания, местоположение на носитель, и т.д. Всей этой информацией являются метаданные. Обратите внимание, что метаданные могут быть обработаны тот же способ, которым данные. Например, Unix хранит метаданные файла в файлах данных, названных каталогами (или папки в этом новом веке вычислений :-)
Файловая система Unix использует основную единицу устройства хранения данных, названного inodes. Отдельный inode может или содержать фактические данные файла, информация о каталоге (метаданные), или быть не использован (свободный). Обратите внимание, что действие создания нового файла включает изменение состояния inode от свободного до выделенных, пишущих данных в новый файл и записи метаданных в файл каталога. Для компьютера возможно отказать посреди этого типа операции, в этом случае файловая система может быть повреждена.
Проверка файловой системы состоит из чтения всего inodes и попытки разрешить, что как можно больше повреждения выходит. Например, предположите, что inode не находится в списке свободного inodes, но нет никаких записей каталога, в которых говорится, что этот inode является частью файла в любом из каталогов, о которых знает файловая система. Этот inode может быть помещен назад в списке свободного inodes.
Синхронная запись - через является способом выполнить запись в диск способом, который гарантирует, что, если катастрофический отказ действительно происходит, файловая система может быть восстановлена. Например, при создании нового файла необходимо выделить inode, создать inode с его набором метаданных, затем обновить файл, содержащий информацию о каталоге. С синхронной записью - через, они сделаны как отдельные действия, по одному, в том порядке. Если катастрофический отказ происходит, прежде чем каталог записан, то inode может быть помещен назад в бесплатном списке, и создание файла не произошло.
Другие типы проверок файловой системы возможны также.
В контексте файловых систем Unix или Linux "метаданные" являются информацией о файле: идентификатор пользователя того, кто владеет им, полномочия, тип файла (специальный, регулярный, именованный канал, и т.д.) и который используют дисковые блоки файл. Это все обычно сохраняется в дисковой структуре, названной "inode". Одно из сведений в inode - то, сколько "ссылок" на файл существует. Регулярный файл обычно имеет 1, но каталог (который является главным образом файлом со специальным предложением, "я - каталог" метка типа файла) имеет по крайней мере 2 ссылки. Все видимое в файловой системе имеет одну ссылку из каталога, в котором это появляется, но так как каждый каталог имеет имя a".", а также его обычное имя, у них есть 2 ссылки.
fsck
может просканировать файловую систему "inode блоки" (дисковые блоки, которые содержат inode структуры данных) найти inodes, которые имеют число каналов, больше, чем 0. Файл, представленный inode с числом каналов, больше, чем 0, должен появиться в каталоге где-нибудь. Если это inode не появляется в каталоге, fsck
помещает файл в известный каталог, обычно "lost+found" наверху файловой системы. Обратите внимание, что файловые системы Unix/Linux обычно не имеют никаких метаданных в inode, о котором каталоге inode принадлежит, только информация в файле каталога, о котором регистрирует каталог, содержит.
fsck
может использовать другие метаданные, как которые дисковые блоки содержит данные файла. fsck
может проверить, появляются ли дисковые блоки, которые, как inode говорит, принадлежат файлу, в "освобожденном списке файловой системы" дисковых блоков. Потенциально fsck
мог проверить, содержат ли два или больше inodes те же дисковые блоки, которые указали бы на некоторое повреждение нескольких-выделений.
Выделение дисковых блоков в файлы появляется в дисковом inodes. Древовидная структура членства в каталоге файловой системы появляется в каталогах. inodes не появляются и не выделяются, каталоги. fsck
использует в своих интересах это разделение, чтобы сделать восстановления. Это очень отличается от систем как MS-DOS или ранний Windows, где "таблица размещения файлов" содержала обе древовидных структуры (членство в каталоге) и выделение дискового блока. Повредите "FAT", и необходимо пойти дисковые блоки сканирования для наблюдения то, что они содержат, и как они могли бы совместиться.
Метаданные являются "Данными о Данных".
В случае *отклоняют файловую систему, метаданные, используемые fsck
от заголовка на каждом блоке данных указывает назад на запись каталога или следующий блок данных и соответствующие записи в каталоге. fsck
сканирует блоки и проверяет, что записи каталога соответствуют и что прямые указатели к следующему блоку корректны.
Это варьируется значительно между файловыми системами. На самом деле то, какие метаданные хранятся и где они хранятся, - то, что большинство дифференцирует, различные *отклоняют файловые системы. Более современные также сохраняют файл журнала изменений в структурах каталогов.