Почтовый файловый сервер ------------------------------------------------------------------------------- Данное описание является обновленной версией текста главы 7 книги "Электронная почта в системе MS-DOS. Официальное руководство компании "Релком" (ISBN 5-7580-0072-8, Санкт-Петербург, "Символ", 1995). ------------------------------------------------------------------------------- Содержание Введение 1. Как обратиться к серверу 2. Имена каталогов и файлов 3. Получение файлов от сервера (команда GET) 4. Получение текстовых файлов от сервера (команда READ) 5. Задание текущего каталога (команды CD и PWD) 6. Списки файлов (команды DIR и LS) 7. Содержимое Киархива 8. Списки файлов и каталогов в Киархиве 9. Файлы с краткой информацией о Киархиве и сервере 10. Получение дополнительной информации о файлах (команда INFO) 11. Поиск файлов и каталогов по образцу (команда FIND) 12. Варианты кодирования файлов (команда ENCODER) 13. Упаковка файлов (команды LIST, ARCHIVER, EXTRACT) 14. Деление файлов на части (команды SIZE, LIMIT, SPLIT) 15. Как получить недостающие части файла? 16. Как раскодировать файлы, приходящие с сервера? 17. Как распаковывать файлы? 18. Перекодировка текстов из koi8-r в код MS-DOS 19. Где взять программы преобразования для MS-DOS? 20. Как поместить файл в Киархив? 21. Контактные адреса ------------------------------------------------------------------------------- Введение Не довольствуясь сим, он ходил еще каждый день по улицам своей деревни, заглядывал под мостики, под перекладины и все, что ни попадалось ему ... все тащил к себе и складывал в ту кучу. Н.В.Гоголь В ряде узлов сети EUnet/Relcom в настоящее время существуют архивы файлов, содержащих информацию самого разного характера: тексты программ, документацию, техническую и художественную литературу, графические изображения, звуковую информацию и др. Подобного рода архивы имеются и в узлах различных зарубежных сетей. Почтовый файловый сервер является специальной программой, постоянно функционирующей на тех узловых машинах сети, которые предоставляют доступ к своим архивам файлов по электронной почте. Основной функцией файловых серверов является пересылка тех или иных файлов из соответствующих архивов по командам от абонентов. В данном документе работа с файловым сервером рассматривается на примере сервера mailserv@relcom.ru, функционирующего в рамках узла Релком-Москва АО "Релком" (kiae). Рассматриваемый почтовый файловый сервер предоставляет Вам доступ к Киархиву - общедоступному файловому архиву узла kiae. Список адресов других наиболее известных российских почтовых файловых серверов можно найти в работе "Электронная почта в сети EUnet/Relcom: работа с информационными архивами" (Иванов В.А., Иванова Е.В., 1996-1997); последняя версия этого документа хранится в Киархиве в файле /relcom/netinfo/archives-by-email.txt. Почтовые файловые серверы различных узлов имеют некоторые различия в наборах команд и могут иметь ограничения доступа для определенных категорий пользователей. Активно интересующимся состоянием архивов в сети EUnet/Relcom рекомендуем подписаться на телеконференции relcom.archives (сообщения о новых поступлениях в архивы) и relcom.archives.d (дискуссии по архивной тематике). 1. Как обратиться к серверу По аналогии с сервером телеконференций обращение к файловому серверу выполняется с помощью специального языка команд, предложения которого помещаются в текст письма, посылаемого файловому серверу по адресу: mailserv@relcom.ru Заметим, что тему письма (в поле Subject заголовка) указывать необязательно, поскольку она игнорируется сервером. Мы рекомендуем начинать работу с файловым сервером с простейшего задания, содержащего единственную команду: HELP По этой команде сервер вышлет Вам краткое описание своих команд (учитывающее все усовершенствования, введенные после подготовки данной главы к печати). HELP содержит текст на русском и английском языках. Задание для сервера (как и для сервера телеконференций) нужно завершать командой QUIT (все строки письма, следующие за этой командой, игнорируются). Команда HELP - исключение, она сама по себе отрабатывает конец задания. Если сервер встречает нераспознанную команду или неверно заданные параметры, он прекращает обработку задания и возвращает протокол работы с указанием ошибки. o Имена команд можно набирать как строчными, так и ПРОПИСНЫМИ буквами. o Имена команд распознаются сервером по первым трем буквам. Поэтому, например, команды EXTRACT, EXTRA и EXT считаются одинаковыми. 2. Имена каталогов и файлов Имена файлов и каталогов (директорий) в Киархиве соответствуют правилам образования имен, характерным для операционных систем типа UNIX. Это обстоятельство следует учитывать пользователям, работающим в MS-DOS. Основные отличия от MS-DOS следующие: o Имя файла (каталога) НЕ ОГРАНИЧЕНО форматом 8+3 (до 8 символов в названии, после которого может следовать необязательное расширение длиной до 3 символов, отделяемое от названия точкой). В силу этого допустимыми являются, например, следующие имена: 0index-recursive gcc-2.6.2.tar.gz o Прописные и строчные буквы в имени файла (каталога) РАЗЛИЧАЮТСЯ, например: FreeBSD (совсем не то же самое, что FREEBSD или freebsd). o В названиях каталогов вместо символа '\' используется символ '/' (сервер автоматически преобразует символы '\' в '/' в аргументах команд, так что данное замечание не столь существенно). В заданиях серверу можно использовать как полные (начинающиеся с символа '/') имена, так и относительные (относительно текущего каталога), например: /relcom/faq/Pechkin.txt имя конкретного файла в конкретном каталоге (полное имя файла); Pechkin.txt имя конкретного файла из какого-то текущего каталога (в данном случае, из каталога /relcom/faq); faq/Pechkin.txt имя конкретного файла из подкаталога faq какого-то текущего каталога (в данном случае, каталога /relcom); ../netinfo/poplist.txt имя файла /relcom/netinfo/poplist.txt относительно текущего каталога /relcom/faq. Имя файла может содержать символы-шаблоны '*' (любой идентификатор) и '?' (один произвольный символ), например: /relcom/netinfo/* все файлы из каталога /relcom/netinfo; /relcom/netinfo/*.txt все файлы из этого каталога, имена которых оканчиваются на .txt; /relcom/netinfo/*.??? все файлы из этого каталога, в именах которых встречается точка за три символа до конца имени. Имя, таким образом, может представлять и группу файлов. 3. Получение файлов от сервера (команда GET) Запрос серверу на пересылку файла (файлов - если файл задан шаблоном) имеет следующий вид: GET файл Например: GET /msdos/0week-recursive Файловый сервер не может отличить текстовые файлы от двоичных. Поэтому считает все файлы в Киархиве двоичными. А поскольку в электронной почте не допускается прямая передача двоичных файлов, сервер преобразовывает любой файл в текстовое представление. Такая операция называется кодированием (а обратная - раскодированием). По умолчанию она выполняется с применением программы uuencode (другие возможности для этого будут описаны в разделе 12). o Выполняемая сервером операция кодирования (через uuencode и др.) всегда обеспечивает 7-битное представление символов результата, несколько увеличивая его длину по сравнению с исходным файлом, но зато всегда обеспечивая возможность отсылки любого файла к пользователям зарубежных сетей. После получения от сервера файлов каждый из них необходимо раскодировать соответствующей программой. Подробнее этот вопрос рассмотрен в разделе 16, а сейчас остановимся на стандартном случае раскодирования принятых файлов при помощи программы bml. Небольшой файл будет выслан Вам одним письмом (в теме письма будет указано имя файла). В этом случае нужно выполнить над этим письмом операцию {Письмо: Извлечь данные:}. В результате на вашем диске появится файл с соответствующим именем и в том же виде, в котором он хранится в Киархиве. Файлы большого размера высылаются сервером в нескольких частях (несколькими письмами). Для раскодирования всего файла необходимо при включенном режиме сортировки по теме {Настройки:Сортировка писем:Тема:} выделить все части принятого файла, после чего выполнить операцию {Письмо: Извлечь данные:} над выделенной группой писем. 4. Получение текстовых файлов от сервера (команда READ) Большая часть файлов в Киархиве хранится в архивированном и упакованном виде (в виде файлов типа .zip, .arj, .tar.Z, .tgz и др.). Однако встречаются и файлы, содержащие текстовую информацию в непосредственно читаемом виде. Их имена часто оканчиваются на .txt. Относительно небольшие текстовые файлы (или небольшие части файлов), хранящиеся в Киархиве в неархивированном и неупакованном виде, часто удобнее получать при помощи команды READ (а не при помощи команды GET): READ файл ... получить от сервера текст из текстового файла (файлов); READ -# файл ... где # - требуемое количество начальных строк из каждого файла. Например: READ -500 0index-recursive выдать первые 500 строк из файла 0index-recursive. Тексты заказанных по команде READ файлов будут включены в отсылаемый пользователю протокол сеанса взаимодействия с сервером (Mail Server Reply), и при работе с ними при помощи вашей программы чтения писем (напр., bml) произойдет автоматическое перекодирование текста из кода koi8-r, в котором такие текстовые файлы принято хранить в Киархиве, в альтернативную кодировку MS-DOS. Таким образом, Вы избавите себя от необходимости дополнительной обработки полученных текстовых файлов. Текстовые файлы большого объема пересылать таким способом неэффективно, их приходится заказывать командой GET при включенной упаковке (см. команду ARCHIVER в разделе 13). 5. Задание текущего каталога (команды CD и PWD) В некоторых случаях удобнее пользоваться не полными, а относительными именами файлов в текущем каталоге. По умолчанию перед анализом первой команды задания текущим объявляется корневой каталог архива ('/'). Переход на использование любого конкретного каталога в качестве текущего можно выполнить следующим образом: CD каталог Например: CD /relcom или CD netinfо (в последнем случае использовано относительное имя каталога). Переход на использование в качестве текущего корневого каталога, если потребуется, можно выполнить командой: CD / или просто: CD (без аргументов). Иногда, особенно в письмах серверу с большим количеством команд (что, естественно, увеличивает вероятность ошибок), полезно для контроля применить следующую команду: PWD выдать имя текущего каталога. 6. Списки файлов (команды DIR и LS) Для получения списков файлов и каталогов можно использовать следующие команды: DIR выдать список файлов и дочерних каталогов текущего каталога с атрибутами (длина, дата) и краткими комментариями; DIR -r аналогична DIR без параметра, но с просьбой выдать список файлов и подкаталогов текущего каталога всех уровней вложенности (r - рекурсивный спиcок); o Будьте осторожны: на больших каталогах объем выдачи по такой команде может достичь нескольких мегабайт! DIR -# аналогична DIR без параметра, но с просьбой выдать список лишь тех файлов, которые появились или были изменены за последние # суток, например: DIR -5; DIR -r -# аналогична DIR -r, но с просьбой выдать рекурсивный список лишь тех файлов, которые появились или были изменены за последние # суток. Любой из представленных вариантов команды DIR может включать в качестве дополнительных параметров имена каталогов, информация о которых Вас интересует. Наиболее полный формат будет иметь следующий вид: DIR -r -# каталог Пример: DIR -r -7 /msdos выдать рекурсивный список файлов, появившихся или измененных за последнюю неделю, для каталога /msdos. LS выдать список файлов текущего каталога без атрибутов файлов (после названий каталогов выдается символ '/'). Команда LS может быть задана и с параметрами, причем в любом из вариантов, которые допускает команда DIR. 7. Содержимое Киархива В предыдущих разделах мы рассмотрели основные команды сервера, необходимые для заказа файлов. Теперь необходимо дать начальное представление о той информации, которую можно получить из конкретного архива (Киархива) при помощи файлового сервера. В Киархиве содержится только та информация, свободное распространение которой допускается ее авторами или правообладателями. Перечень основных тематических секций Киархива: /FreeBSD FreeBSD - полноценная операционная система Unix для PC-совместимых компьютеров с процессорами класса 386 и выше; базируется на версии BSD ОС Unix /apple Программы для Apple Macintosh /archive-tools Утилиты для различных ОС для работы с содержащимися в Киархиве архивированными/компрессированными файлами и для работы с текстовыми файлами, содержащими русские буквы в кодировке koi8-r /gnu Проект GNU - юникс-совместимое некоммерческое программное обеспечение /internet Материалы, связанные с метасетью Интернет /linux Linux - операционная система для PC-совместимых компьютеров с процессорами класса 386 и выше; вариант ОС Unix /misc Разнообразные материалы как связанные, так и не связанные с компьютерами /msdos Все, имеющее отношение к MS-DOS /os2 Все, имеющее отношение к OS/2 /relcom Материалы, связанные с сетью EUnet/Relcom /unix Все, имеющее отношение к UNIX /vms Все, имеющее отношение к VAX/VMS /windows Все, имеющее отношение к MS Windows /x11 X Window System - некоммерческая оконная среда для юниксоподобных ОС. Приведенное тематическое деление архива соответствует текущему моменту и подвержено различным изменениям, связанным с постоянным совершенствованием структуры архива. 8. Списки файлов и каталогов в Киархиве o Информация в перечисленных ниже файлах в большинстве случаев эквивалентна информации, получаемой с помощью команд DIR и DIR -r. Однако при использовании команды GET можно уменьшить траффик для получения той же самой информации в несколько раз (за счет использования уже упакованного файла 0index-r.zip или использования режима упаковки при передаче текстовых файлов большого размера, устанавливаемого командой ARCHIVER). o Данный раздел описывает текущее состояние организации справочной информации в Киархиве и взят из файла /INDEXES-rus. Справочная информация по содержимому Киархива (списки файлов и каталогов) находится в следующих файлах: o В каждом каталоге: 0index комментированный список содержимого текущего каталога (содержит ту же информацию, которую Вы можете получить по команде DIR); для файлов приводятся длина в килобайтах, дата выпуска материала, содержащегося в данном файле, и комментарий; дата выпуска может отличаться от даты создания/модификации файла в Киархиве; комментарий не является обязательным; существует ряд каталогов, в которых файлы 0index не формируются, чтобы не нарушать исходную структуру материала; o В корневом каталоге Киархива (/) и в каждой из тематических секций (/msdos, /unix и т.д.): 0index-recursive комментированный список всех файлов и каталогов текущего и всех дочерних каталогов всех уровней вложенности (содержит ту же информацию, которую вы можете получить по команде DIR -r); 0month-recursive выборка из 0index-recursive, содержит информацию только о файлах, появившихся (или модифицированных) в течение последних 30 дней (содержит ту же информацию, которую вы можете получить по команде DIR -r -30); 0week-recursive, 0day-recursive аналогично 0month-recursive, но, соответственно, в течение последней недели и суток; 0dirs-recursive комментированный список всех дочерних каталогов всех уровней вложенности; 0index-r.zip сжатый компрессором zip файл 0index-recursive; ls-lR.Z полный список файлов Киархива без комментариев, сжат утилитой compress. Все перечисленные справочные файлы формируются ежедневно. Неупакованные файлы, перечисленные выше, являются текстовыми и после их получения при помощи команды GET требуют декодирования и преобразования в код MS-DOS (этого не требуется, если вы пользовались командой READ). Упакованные файлы (0index-r.zip и ls-lR.Z) после декодирования должны быть соответствующим образом разупакованы. o Размер некоторых справочных файлов в корне Киархива довольно велик (0index-recursive - порядка 2.5 Мбайт, 0index-r.zip - 500 Кбайт), поэтому прежде чем заказывать их, стоит оценить Ваши возможности и предварительно ознакомиться, например, с файлом 0index из того же каталога (или выполнить команду DIR) для выяснения размеров интересующих Вас файлов. Особенности заказа и обработки полученных от сервера файлов большого объема, операции раскодирования и разуплотнения будут рассмотрены в разделах 16 и 17. Заметим также, что часто достаточно заказать нужные справочные файлы не из корня Киархива, а только из интересующих Вас тематических секций. Информация о новых поступлениях в Киархив регулярно публикуется в телеконференции relcom.archives: под заголовком "Kiarchive Weekly" по понедельникам можно видеть содержимое файла /0week-recursive, а в начале каждого месяца под заголовком "Kiarchive Monthly" - /0month-recursive. 9. Файлы с краткой информацией о Киархиве и сервере В Киархиве имеется ряд файлов, содержащих краткую информацию о Киархиве и его почтовом файловом сервере. Они могут оказаться полезными, так как существенно компактнее содержимого данной главы. Кроме того, при относительно высокой скорости модификации серверов в такие файлы можно оперативно внести изменения. К числу таких файлов относятся: /README-rus текущее состояние организации справочной информации по содержимому Киархива и сообщения, на которые ведущие архива рекомендуют обратить внимание; /INDEXES-rus перечень списков файлов в Киархиве; /THISARCHIVE-rus краткие сведения о Киархиве; /relcom/kiae/mailserv/Kiarchive-by-email.txt последний вариант документа, который Вы сейчас читаете; /UPLOADING-rus рекомендации пользователям, желающим включить имеющиеся у них файлы в Киархив: поскольку такие желания бывают достаточно редко, соответствующее описание в данной главе (см. раздел 20) приведено очень сжато и предполагает, что после ознакомления с ним пользователь, когда потребуется, внимательно ознакомится с содержимым этого файла. Эти файлы являются текстовыми и содержат тексты на русском языке. Поэтому заказывать их удобнее cледующим образом: READ /README-rus READ /THISARCHIVE-rus READ /INDEXES-rus READ /UPLOADING-rus READ /relcom/kiae/mailserv/Kiarchive-by-email.txt 10. Получение дополнительной информации о файлах (команда INFO) Для многих файлов в Киархиве имеется краткая справочная информация о содержимом этих файлов. Обычно она соответствует информации о файлах, получаемой по команде DIR, однако может содержать и более полную информацию. Получение такой информации (для одного или нескольких файлов) выполняется командой: INFO файл ... Например: INFO /msdos/x.txt INFO y.tar.Z z.zip 11. Поиск файлов и каталогов по образцу (команда FIND) Специальная команда может быть использована для поиска файлов по одному или нескольким образцам. Поиск ведется без различия прописных и строчных букв. Совпадения ищутся как в именах файлов или каталогов (в последнем элементе полного имени файла или каталога), так и в комментариях к ним. Команда имеет следующий формат: FIND образец ... Например, по команде FIND Сеть*Relcom получим информацию (расположение, длину, дату, комментарий) о всех файлах и каталогах, в комментариях к которым будут встречены фрагменты: сеть EUnet/Relcom Сеть получила название EUnet/Relcom СЕТЬ RELCOM и т.п. По команде FIND uupc[4-6]*gamma будет найдена информация о каталогах: /msdos/relcom/ache/uupc5.09gamma/ /relcom/msdos/ache/uupc5.09gamma/ По команде FIND uuexe*zip будет найдена информация о файле /msdos/convert/bin2text/uuexe525.zip В образцах допустимы следующие метасимволы: ! в начале образца - любая последовательность символов, не содержащая последующей части образца; ^ в начале образца - начало строки (имени файла или комментария); $ в конце образца - конец строки; * 0 и более произвольных символов; ? один произвольный символ; [a-z] символ из указанного диапазона; [^a-z] символ вне указанного диапазона; [!a-z] символ вне указанного диапазона. o Символ 'пробел' в образцах не допускается. o Если текущим является каталог первого уровня (/msdos, /unix и т.п.), то поиск проводится только среди файлов дерева данного каталога. По команде FIND выдается информация не более чем о 500 файлах, удовлетворяющих заданному критерию. 12. Варианты кодирования файлов (команда ENCODER) Получив команду GET, сервер обрабатывает файл следующим образом. Если файл не упакован (это распознается по наличию одного из стандартных расширений), он, если это предусмотрено в задании серверу, запаковывается одним из архиваторов (см. раздел 13). Полученный двоичный файл затем перекодируется в текстовое представление (7-битное) одним из возможных способов (по умолчанию uuencode) и, если он слишком большой, разделяется на несколько более мелких частей (см. раздел 14). Тип перекодировки можно изменить командой ENCODER с параметром, который может принимать следующие значения: uuencode принято в Интернет; btoa гораздо компактнее, чем uuencode; ship тоже неплохо. Программа ship обеспечивает также функции, рассматриваемые в разделах 13 и 14, равно как и обратные операции. Программы uuencode и uudecode из комплекта uuexe*zip работают по аналогии с ship, но используют кодирование uuencode. o Если у Вас нет этих программ и (или) инструкций к ним, Вы можете получить их от сервера (см. раздел 19). 13. Упаковка файлов (команды LIST, ARCHIVER, EXTRACT) Большинство файлов в Киархиве хранится в упакованном представлении, в виде так называемых архивных файлов, создаваемых специальными программами-архиваторами. В каждом архивном файле представлена обычно группа исходных файлов, хотя вовсе не исключена возможность архивации и одного файла. Наиболее распространенные типы архивных файлов, которые имеет смысл использовать в MS-DOS, таковы: .tar архиватор tar без упаковщика .tar.Z архиватор tar с использованием упаковщика compress .tar.F архиватор tar с использованием упаковщика freeze .tar.gz архиватор tar с использованием упаковщика gzip .zip архиватор zip со встроенным упаковщиком .arj архиватор arj со встроенным упаковщиком .zoo архиватор zoo со встроенным упаковщиком .lzh архиватор lharc со встроенным упаковщиком .gz упаковщик gzip Первые четыре строки отражают "юниксовское" происхождение архиватора tar. В этой системе традиционно архиваторы не сжимают информацию, это делают программы компрессии, в нашем случае: compress обеспечивает невысокое качество компрессии, но довольно быстро работает; freeze обеспечивает очень высокое качество компрессии, но работает примерно в три раза медленнее; gzip обеспечивает очень высокое качество компрессии, работает довольно быстро. o О том, как получить нужные Вам программы архивирования/упаковки, см. раздел 19. Архиваторы типа zip, arj и lharc достаточно традиционны в практике работы в MS-DOS. Иногда используются архиватор zoo, обеспечивающий высокий уровень компрессии, и упаковщик gzip. Для многих типов архивных файлов можно получить справку о входящих в них исходных файлах с помощью следующей справочной команды с параметрами - названиями архивных файлов: LIST архив ... Стандартно устанавливается режим работы без упаковки. Если Вас это не устраивает, то Вы можете изменить способ архивирования следующей командой: ARCHIVER режим где параметр может принимать значения: none не упаковывать (устанавливается по умолчанию); compress compress; freeze freeze; lharc lharc (не путайте с lha!); zoo zoo; zip zip. Если заданный режим - не none, каждый файл, указанный в команде GET, будет разархивирован и разупакован, после чего каждый входящий в него файл по отдельности (!) будет архивирован и упакован заново в соответствии со значением параметра. Иногда возникает необходимость взять не весь архивный файл, а вычленить из него один или несколько файлов. Это можно сделать командой EXTRACT: EXTRACT архив файл ... где параметр 'архив' задает имя архивного файла, а остальные параметры определяют имена файлов, которые нужно извлечь из него. Указанные файлы извлекаются из архива (архив распаковывается!), упаковываются (в соответствии с режимом, установленным ARCHIVER), кодируются (в соответствии с режимом ENCODER) и после возможного разделения на части (см. раздел 14) отсылаются по почте. Если имена файлов не указаны, отсылается весь (переупакованный!) архив. o Каждый извлеченный файл будет упакован и архивирован в отдельный новый архивный файл. Пример: ARCHIVER zoo EXTRACT compress.zip compress.exe QUIT o Обращайте внимание на то, что в архивном и (или) упакованном файле могут быть представлены текстовые файлы как в кодировке MS-DOS, так и в koi8-r (см. раздел 18). 14. Деление файлов на части (команды SIZE, LIMIT, SPLIT) Электронная почта не предназначена для передачи большого объема данных одним письмом. По умолчанию сервер сначала перекодирует бинарный файл в текстовое представление, затем делит полученный текст на части, каждая из которых имеет размер не больше 30 килобайт. Эту величину можно изменить командой SIZE с параметром, указывающим предельный размер в килобайтах, например: SIZE 40 Для предотвращения передачи избыточного количества информации в результате ошибки при составлении задания введено ограничение на общий объем передачи файлов по командам GET за один сеанс работы с сервером. Узнать текущее значение этого ограничения можно командой: LIMIT Очередной файл, при передаче которого было зафиксировано превышение установленного ограничения, будет выдан полностью, после чего остальные файлы уже передаваться не будут. Установленное ограничение можно изменить, указав его значение в килобайтах. Например, команда: LIMIT 5000 устанавливает ограничение в 5 мегабайт. Выполнив деление файла, сервер отправляет пользователю каждую часть отдельным письмом. Такие письма содержат информацию об общем количестве отправленных частей файла и последовательных номерах частей. Описанный способ деления файла на части, называемый текстовым, обычно не вызывает трудностей при сборке файла из частей после их получения. При желании можно использовать и обратный алгоритм: сначала поделить двоичный файл на части, затем каждую из них по отдельности перекодировать в текст. Такое деление называется двоичным или бинарным. Изменение способа деления файлов на части делается командой SPLIT с параметром, который может принимать одно из следующих значений: text деление на части после кодирования (устанавливается по умолчанию); binary деление на части двоичного файла с последующим кодированием каждой части отдельно. Пример: ARCHIVER zoo CD usenix SIZE 60 SPLIT binary GET readme QUIT 15. Как получить недостающие части файла? Иногда бывает, что одна или несколько частей файла не доходят до адресата. Сервер позволяет, не заказывая снова весь файл, получить только недостающие части. Для этого служит специальный параметр -#, где # - список нужных частей, который может применяться в командах GET и EXTRACT, например: GET -3,5-9,13-15 /msdos/djgpp/djgpp.zip QUIT Дозапрашиваются части 3, 5, 6, 7, 8, 9, 13, 14, 15. Применяемые для этой цели команды могут иметь вид: GET -# файл EXTRACT -# архив файл o При дозаказе недостающих частей должны быть указаны такие же команды ARCHIVER, ENCODER, SIZE, SPLIT, как и при первоначальном заказе. 16. Как раскодировать файлы, приходящие с сервера? Способ раскодирования каждого полученного файла зависит от того, как файл был закодирован при передаче и на какое число частей он был поделен. Это приводит к нескольким различным вариантам раскодирования. Стандартными являются варианты 1 и 3. Вариант 1. Файл состоит из одной части, кодировка uuencode Uuencode "запоминает" исходное имя файла в теле переданного файла, но оно может оказаться недопустимым в MS-DOS. В этом случае нужно в bml перейти из режима просмотра письма в режим редактирования, найти строку вида 'begin 644 filename.ext' и скорректировать имя файла. Затем используйте операцию {Письмо: Извлечь данные:} bml. Вариант 2. Файл состоит из одной части, кодировка btoa или ship Запишите письмо в отдельном файле соответствующей операцией bml. Раскодируйте файл соответствующей командой: atob или ship. Btoa и ship (в отличие от uuencode) не запоминают имени файла в его тексте. Пример: atob file.ba file.bin ship -u file.shp file.bin Вариант 3. Много частей, кодировка uuencode, деление текстовое При использовании bml можно воспользоваться следующим приемом: включить режим сортировки писем по теме, выделить все части принятого файла, после чего выполнить операцию {Письмо: Извлечь данные:}. Можно поступить по-другому: записать принятые части в файлы с именами part1, part2..., после чего (при использовании uudecode.exe из комплекта uuexe*.zip) для восстановления файла достаточно вызвать: uudecode part Вариант 4. Много частей, кодировка btoa, деление текстовое Запишите в bml все части в один (собственный архивный файл) строго в порядке следования. Выйдите из bml и отредактируйте полученный файл, убрав все промежуточные заголовки статей. После этого файл должен выглядеть одним цельным массивом. Раскодируйте файл так, как это было описано в предыдущих вариантах. Вариант 5. Много частей, кодировка uuencode, деление двоичное Каждую часть обработайте отдельно в соответствии с вариантом 1. При этом будет создано нужное количество файлов с именами вида part001, part002 и т.п. Выйдите из bml и соедините полученные файлы в один в порядке их следования командой: copy/b part001+part002+...+partXXX file.bin Вариант 6. Много частей, кодировка btoa, деление двоичное Каждую часть запишите в отдельный файл соответствующей операцией bml с именами вида: part001.ba part001.ba ... Обработайте каждую часть программой atob, например: atob part001.ba part001 Соедините полученные версии частей таким же образом, как в предыдущем варианте. Вариант 7. Много частей, кодировка и деление посредством ship Каждую часть запишите в отдельный файл соответствующей операцией bml с именами вида part001.shp. Обработайте полученные файлы программой ship, например: ship -u part*.shp file.bin o Если у Вас нет программы atob или ship, см. раздел 19. 17. Как распаковывать файлы? После раскодирования Вы получили файл в том виде, в котором он хранится в Киархиве. Файлы типа .zip или .arj привычны для пользователей MS-DOS. В данном разделе рассматриваются типы файлов, вызывающие наибольшие трудности у пользователей, работающих в MS-DOS. Рассмотрим следующие варианты: Вариант 1. Файл типа .Z Для этого необходимо иметь программу compress. Eсли же ее у Вас нет, смотрите раздел 19. Для работы compress требуется большое количество оперативной памяти (около 450 килобайт), что следует учитывать. Чтобы распаковать файл file.Z, в командном режиме MS-DOS необходимо выполнить: compress -v -d -i file.Z Вариант 2. Файл типа .F Чтобы распаковать файл file.F, необходимо выполнить команду: freeze -v -d -i file.F Вариант 3. Файл типа .tar.Z Файл типа .tar.Z сначала нужно распаковать утилитой compress (см. Вариант 1), а затем разархивировать результат с помощью команды: tar xvf file.tar Если у Вас нет программы tar, смотрите раздел 19. Вариант 4. Файл типа .gz В последнее время очень популярным стало использование упаковщика gzip вместо compress. Файлы, упакованные gzip, имеют расширение .gz (или .z), причем расширение .tar.gz часто сокращают до .tgz . Распаковать файл типа .gz можно командой: gunzip файл.gz файл o Если у Вас нет программы compress, freeze, tar или gunzip, см. раздел 19. 18. Перекодировка текстов из koi8-r в код MS-DOS Как уже было рассмотрено в разделе 4, текстовые файлы, полученные при помощи команды READ, перекодируются из koi8-r в код MS-DOS автоматически. Если же Вы используете для получения текстового файла команду GET, то после приема и раскодирования полученного файла необходимо произвести преобразование кодировки текста из koi8-r в код MS-DOS. Эту же операцию приходится делать, если текстовый файл в кодировке koi8-r был получен в составе архивированного и упакованного файла (или извлечен из такого файла при помощи команды EXTRACT). Перекодировку в код MS-DOS можно выполнить с помощью специальной программы todos: todos файл Эту программу можно получить из Киархива, она включена в состав файла /msdos/convert/char/d1489e*.zip. (Если переименовать ее во fromdos, то она будет выполнять обратное преобразование, переименованный вариант также включен в состав указанного .zip-файла.) 19. Где взять программы преобразования для MS-DOS? Тексты и бинарные дистрибутивы программ архивирования, упаковки и кодирования для MS-DOS регулярно рассылаются в телеконференции comp.binaries.ibm.pc. Все упоминавшиеся ранее и ряд других программ для архивирования (разархивирования), компрессии (декомпрессии), кодирования (раскодирования), а также для преобразования кодировок текстовых файлов и инструкции к ним для работы в MS-DOS Вы можете найти соответственно в следующих каталогах Киархива: /msdos/arcers архиваторы/разархиваторы для работы с файлами типа .zip, .arj, .tar, .zoo, .lzh; /msdos/compress компрессоры/декомпрессоры (.Z, .F, .gz); /msdos/convert/bin2text кодирование двоичных файлов (перевод в текстовую форму) и обратное раскодирование (в том числе uuencode/uudecode); /msdos/convert/char преобразование кодировки текстовых файлов (в частности, преобразование из кодировки koi8-r в альтернативную кодировку MS-DOS). Обратите внимание на популярные в последнее время программы uuencode и uudecode из комплекта /msdos/convert/bin2text/uuexe*.zip, которые очень быстро выполняют текстовое деление файла на части и кодирование (uuencode), равно как и обратные операции. Для пользователей MS-DOS представляет интерес и программа tar.exe, содержащаяся в файле /msdos/arcers/tar*p.zip, позволяющая работать с характерными для среды UNIX файлами типа *.tar, *.tar.Z, *.tar.gz или *.tgz . 20. Как поместить файл в Киархив? К присылаемым в Киархив файлам предъявляются два основных требования: содержимое должно представлять интерес для абонентов сети и их распространение не должно нарушать прав собственности, авторских и других. Прежде чем послать файл, следует внимательно ознакомиться с текстом уже упоминавшегося ранее файла /UPLOADING-rus в Киархиве с подробным описанием такой процедуры. Ее краткая суть заключается в том, что Вы предварительно посылаете администратору Киархива (kiarchive-adm@relcom.ru) заявку на включение Вашего файла в Киархив, причем определенного содержания и в определенной форме. Хотя формат заявки очень похож на предложения заголовка письма, текст заявки должен быть полностью помещен в самом письме. Посылать файл следует только после получения соответствующего согласия на это от администратора Киархива. Большие файлы приходится сначала упаковывать, кодировать и, возможно, разбивать на части, отсылаемые отдельными письмами. Подготовленные к отсылке части необходимо оформлять в стиле, близком к стилю аналогичной работы сервера. Двоичное разбиение будет представлять определенные трудности. Куда проще использовать разбиение текстовое. Его несложно выполнить после кодирования даже "вручную". Для этого Вы можете применить любой текстовый редактор, выделяя им в отдельную часть целое число строк файла. Операции кодирования и последующего деления на части требуемого объема можно сделать и автоматически с помощью программ uuencode (из комплекта uuexe*.zip) или ship. При кодировании uuencode команда: uuencode -s 487 myfile.zip порождает файл myfile.uue. Если же закодированный файл будет иметь более 487 строк (или 30 КБ), он делится на части, не превышающие 487 строк, с названиями: myfile1.uue, myfile2.uue ... При кодировании ship команда: ship -20 bigfile позволяет получить части файла bigfile, не превышающие 20 Кб, записанные в файлы с именами part0001, part0002 ... и полностью готовые к передаче по почте (описанная в инструкции к ship возможность автоматически отправлять подготовленные части файла по почте в среде MS-DOS не работает). 21. Контактные адреса Администратор файлового сервера всегда готов помочь Вам в разрешении проблем, которые могут возникнуть у Вас при работе с сервером. Однако прежде чем обращаться к администратору, загляните еще раз в HELP - практика показывает, что большую часть вопросов задают пользователи, ни разу не читавшие этот документ. В Ваших письмах администратору желательно цитировать полученные Вами ответы сервера (Mail Server Reply), иллюстрирующие возникшую проблему. Адрес администратора почтового файлового сервера узла kiae: mailserv-adm@relcom.ru По этому же адресу Вы можете послать Ваши предложения по улучшению и развитию данного сервера. Если же Ваши проблемы связаны с информацией, содержащейся в конкретных файлах в Киархиве, или же с отсутствием каких-либо файлов, а также если Вы имеете предложения по улучшению структуры или содержимого Киархива, то лучше написать письмо непосредственно администраторам Киархива по адресу: kiarchive-adm@relcom.ru ------------------------------------------------------------------------------- Автор: Яснопольский Леонид Николаевич Редактор: Волков Анатолий Иванович ------------------------------------------------------------------------------- Дата последней модификации документа: 09.12.97 (c) АО "Релком", 1996-1997