LXF103:Миграция продолжается

Материал из Linuxformat.

Перейти к: навигация, поиск
Миграция из Windows в Linux Меняем «прописку» без лишних проблем

Содержание

Контора – ПК – Linux: рабочий треугольник

Перейти на Linux не так сложно, как кажется на первый взгляд. Дмитрий Дроздов готов поделиться своими фирменными рецептами.

С поры о «готовности» Linux к использованию на настольном офисном, сиречь «конторском», компьютере не утихают многие годы. В ситуации нечеткого определения критериев той самой «готовности» неизменным результатом таких споров будет очередное подтверждение народного наблюдения: «Сколько людей – столько и мнений». Автор вот уже несколько лет использует Linux (и большой набор программ с открытым кодом) в повседневной деятельности на обычном рабочем месте в обычном офисе, и готов поделиться своим опытом.

Задачи офисного сотрудника, не связанного непосредственно с управлением ИТ-ресурсами, весьма стандартны: работа с электронной почтой, текстовыми документами и электронными таблицами, пользование web-браузером и какими-то специальными приложениями. Для всех этих задач (кроме специальных приложений) в Linux уже давно есть вполне работоспособные программы, которые надо просто установить и научиться ими пользоваться. Любой современный дистрибутив предоставляет все необходимые средства если не «из коробки», то при минимальной настройке. Так что потенциально ничего необычного в использовании Linux в качестве основной операционной системы нет. Тогда почему же есть повод писать статью, которую вы читаете?

По большому счету, потребителю абсолютно все равно, каким образом выполнен его заказ; интересуют лишь качество, сроки и цена. Однако в области ПО для персональных компьютеров сложилась парадоксальная ситуация: фокус смещен с выполнения задачи на инструменты ее решения, точнее, на выбор прикладного и системного ПО. Таким образом, мы постоянно находимся в плену у некого стереотипа: что все, что делается в определенных продуктах – «правильно», а все остальное – «альтернативное», а значит, и «неправильное». Поэтому первая задача при внедрении Linux в офисе – убедиться и убедить, что открытое ПО дает хоть и альтернативное, но правильное (с точки зрения задач потребителя) решение.

Следующая задача – подбор программного обеспечения. Поначалу даже сама возможность выбора пугает. Более того, в условиях, когда многочисленные специалисты по удобству использования твердят мантру, что программа может иметь только один вариант выполнения задачи, а меню всех приложений должно начинаться словом «Файл» и никак иначе, стать еретиком психологически очень сложно. Но – возможно: потом становится ясно, что широкий выбор программ повышает эффективность работы.

Выбрать программное обеспечение достаточно легко: любой настольный дистрибутив – Mandriva (мы остановимся именно на ней), Ubuntu или какой-то еще – при установке по умолчанию дает вполне достаточный набор программ для работы в офисе. Но это только первая часть задачи, после решения которой необходимо сформировать рабочее окружение для пользователя, т.е. перенести все его файлы и дать удобные средства настройки автоматизации рабочих процессов. И эта вторая часть зачастую оказывается более трудной и требующей творческого подхода.

Кажущаяся сложность переноса рабочего окружения являлась и является препятствием к миграции на Linux для значительного числа пользователей. Избежать проблем поможет продуманный план переноса. Как минимум, надо скопировать:

  • Личные файлы пользователя: документы, мультимедийный контент и другие файлы.
  • Архив электронной почты, включая адресную книгу.
  • Личные настройки (закладки, сертификаты и т.п.) web-браузера.
  • Данные из персональных информационных источников.

У кого-то может возникнуть страх перед большим объемом работы, но, как говорится, «Глаза боятся, а руки делают». Впрочем, в нашей ситуации правильнее было бы сначала голову применить.

Копируем данные пользователей

Мастера импорта документов и настроек Windows.

Начиная с версии Mandriva 2008.0, в состав Центра управления включен мастер импорта документов и настроек из Microsoft Windows. Несколько раньше аналогичный инструмент по имени Migraiton Assistant появился в Ubuntu (версия 7.04). Спрос на перенос системы, как говорится, рождает предложение. В целом, оба решения обеспечивают приблизительно одинаковые возможности.

Мастер в Mandriva 2008.0 пока не локализован, однако позволяет импортировать документы, закладки web-браузера и даже фоновое изображение рабочего стола (!) из смонтированного раздела Microsoft Windows. Практически вся работа делается один раз и буквально в несколько кликов мыши – надо только найти мастер на закладке «Система» Центра управления.

Результатом работы мастера будет перенос всех обнаруженных документов и изображений из рабочих каталогов пользователей Windows. Хочется отметить, что кириллические названия папок и файлов переносятся вполне корректно (если, конечно, Windows-раздел смонтирован правильно). Однако если какие-то важные данные поль- зователя сохранены не в стандартной папке Documents and Settings\...\Мои документы, то они не будут импортированы. Самое обескураживающее – вам не зададут никаких вопросов о переносе подобных документов. Неохваченными останутся даже файлы, просто «наваленные» на рабочий стол, так что ручной работы, к сожалению, пока не избежать. Ее последовательность очевидна:

  1. Монтируются раздел(ы) файловой системы с документами и прочими файлами, накопленными в Microsoft Windows.
  2. Внимательно рассматривается структура накопленных данных, вырабатывается стратегия переноса. Возможно, что-то разумнее не держать на винчестере, а заархивировать на других носителях, и удобный момент времени для этого как раз настал?
  3. Нужные папки переносятся в домашний каталог пользователя, остальные – архивируются.
  4. Принимается решение, надо ли перекодировать чисто текстовые файлы; в случае необходимости – эта операция выполняется.

Самым длительным является второй этап, поскольку он требует обдумывания и определенного наведения порядка (хотя бы в мыслях), все остальное делается достаточно легко и не занимает много времени.

Переносим архив электронной почты

Пожалуй, это наименее тривиальная задача, возникающая при переходе на Linux. К счастью, ее решение в случае использования Microsoft Outlook подробно описано в LXF100/101. У нас, однако, высокой популярностью пользуется программа The Bat!, и перенос почтовоадресной базы из нее – стандартная проблема.

Для копирования адресной книги The Bat! проще всего экспортировать ее содержимое (можно – выборочно) при помощи штатных средств в формат CSV (значения, разделенные запятыми) или LDIF. Данные в этих форматах понимают все распространенные клиенты электронной почты, существующие в Linux (тот же Mozilla Thunderbird), но вам почти наверняка потребуется перекодировать содержимое CSV-файла в UTF-8.

С самими письмами дела обстоят несколько хуже – в том смысле, что решение этой задачи потребует немало ручного труда. The Bat! умеет экспортировать письма в «родной» для Linux формат – Unix Mailbox. Однако встроенными средствами это можно сделать лишь для одной папки. Для этого необходимо выбрать ее, выделить все письма (а может, стоит заодно решить вопрос лишь о частичном переносе, дабы не переполнять архив?) и активировать пункт меню Инструменты > Экспортировать. В появившемся диалоге выберите формат «Unix-ящик», затем укажите имя файла... и так для каждой папки. Полученные файлы импортируйте по одному в выбранный почтовый клиент.

А что, если папок больше десятка? Можно, например, уменьшить их число переносом писем в несколько крупных папок-«конгломератов», что может оказаться полезным, поскольку начинается «новая жизнь» и можно попутно заняться реструктуризацией архива.

Если это неприемлемо, а многократно щелкать мышью большого желания нет, можно воспользоваться одной из утилит для пакетного переноса файлов. Вероятно, наиболее удачной (по крайней мере, мне не известно об ошибках при работе с ней) является утилита tb2kmail Мальте Штреца [Malte S. Stretz], доступная по адресу http://msquadrat.de/projects/tb2kmail. Tb2kmail – скрипт на языке Perl, а собственно конвертация производится вызовом программы The Bat! с соответствующими параметрами командной строки. Значит, для конвертации сразу всех папок Perl-скрипт надо запускать в среде Windows, где установлена программа The Bat!. Эта задача (впрочем, на упомянутой выше странице есть вполне внятная инструкция на английском языке и перечисление необходимых для работы модулей Perl) станет хорошей разминкой перед постоянным использованием скриптов в Linux. Tb2kmail позволяет конвертировать архив в формат KMail или Mozilla Thunderbird (при помощи специального патча), что вполне достаточно для решения практических проблем переноса.

Говоря о переносе почты, нельзя не затронуть еще одну проблему: фильтры автоматической сортировки сообщений. Увы, автору не удалось найти ни одного приемлемого способа автоматизировать эту задачу, так что тут придется поработать вручную.

Еще проблемы? Решения есть!

Традиционной вспомогательной задачей при миграции является перекодировка данных. В качестве локали по умолчанию современные дистрибутивы Linux используют UTF-8, а большая часть текстовых документов Windows хранится в CP-1251. Для ее решения вполне подойдут утилиты командной строки iconv или recode, об использовании которых можно прочитать во врезке или в man-страницах. Если в вашем Windows-архиве есть файлы еще времен DOS, то их содержимое, скорее всего, осталось в кодировке CP866. И ее тоже можно превратить в UTF-8 упомянутыми выше программами. Стоит ли устраивать массовую перекодировку сразу всех файлов или же перекодировать отдельные документы по мере их использования – следует решать отдельно в каждом конкретном случае.

Другой проблемой является приведение к читаемому виду названий файлов, перенесенных с файловых систем, не поддерживающих явное задание кодировки для их имен. Этого не случается (по крайней мере, автору такие прецеденты не известны) при миграции с Windows, но при миграции с иной локали Linux – всенепременно произойдет, если использовались наиболее распространенные в открытой ОС файловые системы ext2/3 или ReiserFS. «Чужеродные» имена представляются последовательностью вопросительных или других неосмысленных знаков и могут обескуражить любого.

Для решения задачи корректной перекодировки имен файлов и папок Бьерн Яке [Bjoern Jacke] написал на Perl великолепный скрипт – convmv (http://www.j3e.de/linux/convmv/). При его использовании нужно иметь в виду, что перекодированы будут только имена, принадлежащие файлам и каталогам, для которых разрешена запись. Если запустить скрипт без ключа --notest, то никаких действий по переименованию произведено не будет: скрипт просто выведет список файлов, которые собирается изменить. В остальном программа работает без неожиданностей. Также положительной особенностью convmv является попытка разобраться в том, какие имена файлов уже перекодированы в UTF-8; впрочем, этот «искусственный интеллект» можно и отключить.

Определенную проблему может представлять перекодировка тэгов звуковых файлов и изображений. Для решения этой задачи существует множество более или менее функциональных утилит, которые легко найти в Сети. Похоже, что на сегодня наиболее мощной по возможностям и наиболее поддерживаемой является программа EasyTag (http://easytag.sourceforge.net) Джерома Кудерка [Jerome Couderc], которая позволяет проделывать все необходимые манипуляции с тэгами файлов формата MP3 и Ogg. Программа уже собрана для множества дистрибутивов, и можно скачать подходящий пакет.

Для более локальных изменений подойдет красивый скрипт tag2utf (http://sourceforge.net/projects/tag2utf) Андрея Копаца, который перекодирует тэги MP3-файлов в UTF-8 в командной строке. Тэги, уже закодированные в UTF-8, скрипт не обрабатывает, и обратной перекодировки не предусмотрено. Для работы программы потребуется установка пакета python-eyed3. К слову, достаточно подробное описание MP3-тэгов и работы с ними в Python было приведено в LXF97. Существует также Java-утилита ID3iconv (http://www.cs.berkeley.edu/~zf/id3iconv), автор – Фэнь Чжоу [Feng Zhou]. Кстати, перекодировщик можно пригодиться не только при переходе на Linux, но и впоследствии, при копировании музыки на какой-нибудь портативный плейер. Альтернативный вариант – настроить проигрыватель стационарного компьютера на работу с тегами в кодировке CP-1251. В зависимости от выбранного вами аудиоплейера эта задача может оказаться нетривильной, но, как правило, она решается.

Перекодируем содержимое файлов

Использование recode для перекодирования содержимого файла выглядит так:

 recode <from>..<to> имя_файла

Замените <from> и <to> на имена кодировок, список которых можно получить, набрав recode -l. Например (между именами кодировок стоят две точки):

 recode cp1251..utf8 kernigan.txt

перекодирует файл с именем kernigan.txt из кодировки CP1251 в UTF8. В отличиt от recode, iconv по умолчанию направляет вывод на терминал и применяет несколько иной синтаксис указания кодировок:

 iconv -f cp1251 -t utf8 kernigan.txt | less

Здесь мы используем канал и утилиту less для удобного просмотра текстового файла на экране. Чтобы перенаправить вывод iconv в файл, достаточно использовать команду перенаправления вывода >. В некоторых случаях iconv сообщает о недопустимых знаках и прерывает конвертацию. Тогда достаточно добавить еще один ключ , указывающий на необходимость игнорирования недопустимых символов. Например:

 iconv -f cp1251 -t utf8 -с kernigan.txt

И напоследок – пара советов по поводу того, как перекодировать сразу все файлы в каталоге. Возможны два варианта: не делать перекодировку для файлов во вложенных папках и перекодировать все файлы, включая файлы в подкаталогах. Решений может быть несколько; продемонстрируем лишь пару возможных подходов.

Для перекодировки всех файлов текущей папки можно написать скрипт. Он настолько простой, что вполне может стать вашим первым скриптом на Bash; его даже можно ввести прямо в командой строке:

 for FIL in *; do if [ -f «$FIL» ]; then recode cp1251..utf8 «$FIL» && echo «$FIL recoded»; fi; done

Этот набор команд (впрочем, в нем есть и цикл, и условный оператор, и оператор && для вывода сообщения только в том случае, если перекодировка прошла успешно) перекодирует все файлы в текущем каталоге. Разобрать структуру «однострочника» будет полезным домашним заданием, если у вас есть желание хотя бы изредка пользоваться всей силой командной строки.

Для перекодировки всех файлов во вложенных каталогах больше подойдет команда find:

 find ./ -type f -exec recode cp1251..utf8 '{}' \;

Будут уместны лишь самые краткие пояснения: ./ ограничивает поиск текущим каталогом (и всеми его подкаталогами), -type f указывает, что надо искать файлы, а -exec задает команду, которую необходимо применить к каждому найденному объекту, имя которого подставляется вместо {}. Заэкранированная точка с запятой (\;) служит ограничителем команды. Кстати, ограничив глубину поиска текущей директорией при помощи параметра -maxdepth 1, можно было избежать цикла в первом примере.

Разделяй и властвуй!

Этот лозунг времен Римской империи вполне применим к настройке сервера Samba: надо разделить с другими результаты работы, при этом нельзя терять контроля над своими файлами. Несмотря на наличие графических интерфейсов для администрирования Samba, ее конфигурационный файл настолько хорошо прокоментирован, что настроить сервер проще всего вручную. Примерная последовательность действий такова:

  1. Откройте root-терминал (или выполните su) и перейдите в каталог /etc/samba.
  2. Сохраните резервную копию существующего файла smb.conf: cp smb.conf smb.conf.bak
  3. Откройте файл smb.conf в любом удобном текстовом редакторе и отредактируйте его.

Строки, начинающиеся с # или ; являются комментариями – и, как нетрудно заметить, файл почти целиком и состоит из пояснений. Я обычно вношу следующие изменения: указываю название рабочей группы, описание сервера

 workgroup = <Название рабочей группы>
 server string = <Комментарий, который будет показан в Сетевом окружении>

и закомментирую все строки, касающиеся принтеров. Затем создаю два общих ресурса: один для свободной записи файлов, второй – доступный для внешних пользователей только для чтения.

 [incoming]
    comment = Incoming for me
    path = /trash/exchange/incoming
    read only = no
    public = yes
    writable = yes
    directory mask = 0777
    create mask = 0666
    printable = no
 [outcoming]
    comment = Outcoming from me
    path = /trash/exchange/outcoming
    read only = yes
    public = yes
    writable = no
    printable = no

Естественно, надо не забыть создать нужные каталоги в файловой системе и установить на них разумные права доступа. Директорию outcoming, куда будут записываться файлы для коллег, которые они должны только читать, надо сделать доступной на запись для локальных пользователей компьютера и открытой для просмотра пользователем nobody. Для каталога incoming надо установить пользователя и группу в nobody и разрешить все: чтение, запись, просмотр:

 chown nobody:nobody incoming
 chmod 777 incoming

В некоторых случаях сервер Samba имеет другие настройки пользователя, от имени которого создаются новые файлы. Очевидно, в таких случаях надо сделать небольшие поправки.

  1. Сохраните сделанные изменения в smb.conf.
  2. Командой service smb restart перезапустите сервер Samba и, зайдя с любой Windows-машины, убедитесь, что все работает, как задумано.

Пора радоваться результатам

Все описанные действия вместе с установкой дистрибутива занимают (по опыту автора) несколько часов. Пол-дня работы, а то и меньше – и на вашей машине установлено вполне легальное ПО и создана почти привычная рабочая среда, при этом никакие действительно нужные для работы данные не потеряны. Это все? Для начала работы вполне достаточно. Более того, получен достаточно богатый опыт по настройке и конфигурированию системы, а это тоже очень ценное приобретение.

Как говорится, «что и требовалось доказать»! В результате получена полностью работоспособная система, в которую привнесены привычные настройки Windows-пользователя. А в следующий раз мы обсудим, как повысить эффективность работы с офисными документами. LXF

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию