---
title: 'Копирование контактов с Windows Mobile под Linux'
url: 'https://graker.ru/news/2010/01/15/kopirovanie_kontaktov_s_windows_mobile_pod_linux'
language: ru
type: post
author: 'Роман Грачев'
published: '2010-01-15T03:00:41+03:00'
updated: '2017-03-13T13:09:45+03:00'
categories:
  - Линукс
  - Мобильное
---

# Копирование контактов с Windows Mobile под Linux

Когда-то [писал](https://graker.ru/node/69) о том, как здорово организован в Windows Mobile 6.1 экспорт списка контактов. И вот, пару дней назад руки дошли, наконец, до попытки его экспорта под Linux.

![](https://graker.ru/sites/default/files/styles/max_1300x1300/public/legacy/synce.png.webp?itok=OiX396Ox)

Первым делом установил [SynCE](http://www.synce.org/moin/), позволяющий наладить связь с телефонами на Windows Mobile. В openSUSE установку можно осуществить из [репозитория](http://download.opensuse.org/repositories/system://SynCE/openSUSE_11.2/system:SynCE.repo). Поставил наборчик для KDE4 и запустил synce-kpm. Заработало прямо сразу. Иконка, подозрительно напоминающая ActiveSync, появилась в трее, а при подключении телефона через USB - позеленела и радостно сообщила, что подключен Toshiba g810. В окошке synce-kpm появилась сопутствующая информация: имя и фамилия владельца, список установленного софта, уровень заряда, свободное место на флешке и всякое такое. Можно даже установить прямо оттуда софт из CAB-файлов (я не пробовал). Симпатичная программка.

Для извлечения же данных из телефона необходим [OpenSync](http://www.opensync.org/). Он тоже легко ставится из репозитория - `zypper se opensync` показывает доступные пакеты. В принципе, можно поставить впрок их все, но важно отметить, что нужно ставить плагин `libonepsync-synce-plugin`, если в телефоне Windows Mobile 5 и выше, и `libonepsync-synce-plugin-legacy` в противном случае. Пользователей openSUSE тут, кстати, поджидает сюрприз баг. В репозитории 11.2 находится нерабочая версия `libopensync-plugin-python-module` ([подробности](https://bugzilla.novell.com/show_bug.cgi?id=557600)). Но эта проблема легко решается удалением плохого модуля и установкой хорошего - из репозитория [openSUSE Factory](http://download.opensuse.org/repositories/OpenSync:/OpenSync-svn/openSUSE_Factory/).

![](https://graker.ru/sites/default/files/styles/max_1300x1300/public/legacy/multisyncgui.png.webp?itok=xAK_2Y72)

Дальше по [инструкции](http://www.synce.org/moin/SynceInstallation/OpenSuse#Syncing) настроил группу синхронизации. Плагина для синхронизации данных телефона с программами KDE4-PIM пока нет, да и мне не очень надо. Мне хотелось просто вынуть из телефона список контактов, поэтому выбрал плагин file-sync - чтобы получить контакты в виде файлов. Группу синхронизации можно создать как из консоли, так и из программки msynctool-gui. Синхронизацию же лучше проводить из консоли командой `msynctool --sync ИМЯГРУППЫ` - гораздо информативнее и сразу понятно, когда она закончилась.

Когда синхронизация (то есть перекачивание контактов и записей календаря) закончилась, я отправился в заданную директорию смотреть, что же она мне принесла. А принесла она мне вот что:

![](https://graker.ru/sites/default/files/styles/max_1300x1300/public/legacy/syncefiles.png.webp?itok=DmMxN4Bx)

Прекрасно, 313 файлов с загадочными названиями. Но иконки файлов подсказывают, как видно на рисунке, что это не просто файлы, а файлы календаря и контактов. Действительно, заглянув внутрь любым текстовым редактором можно увидеть волшебные надписи VCARD и VCALENDAR.То есть задача-минимум решена — я получил список контактов в открытом формате.

Отделить одно от другого не составит труда — достаточно написать скрипт, сортирующий файлы по результатам `grep VCALENDAR` и `grep VCARD`. Правда, добавлять сотни файлов в KAddressBook, или иную программу, вручную не очень хочется. Но формат VCARD гуманен — он позволяет слить содержимое всех файлов в один, что тоже может сделать простой скрипт.

Более серьезная (но тоже решаемая) проблема вскрылась, собственно, при попытке добавить контакт в KAddressBook. Оказалось, что человеческое имя «Иван Сигизмундович Квазитараканов» будет урезано и попадет в программу как «Иван». Что неудобно: мало ли, сколько у меня таких иванов в записной книжке. Поначалу показалось, что сделать ничего нельзя и пора проклинать испортившую записи Винду, но внимательный просмотр содержимого записи показал следующее:

```
FN;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=D0=95=D0=BA=D0=B0=D1=82=D0=B5=
=D1=80=D0=B8=D0=BD=D0=B0 =D0=93=D0=B5=D0=BD=D0=BD=D0=B0=D0=B4=D0=B8=D0=
=B5=D0=B2=D0=BD=D0=B0
N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=D0=95=D0=BA=D0=B0=D1=82=D0=B5=
=D1=80=D0=B8=D0=BD=D0=B0 =D0=93=D0=B5=D0=BD=D0=BD=D0=B0=D0=B4=D0=B8=D0=
=B5=D0=B2=D0=BD=D0=B0;;;
```

Как мы видим, содержимое полей First Name и Name (которые в данном случае равны) почему-то разбито на несколько строк с повторением знака равенства в местах переноса. Если же удалить разрывы строк и повторные "=" — имя контакта восстанавливает целостность и отлично воспринимается адресной книгой. В данном случае не столь важно, виновата в этом мобильная винда, криво выдающая данные, или же программа KAddressBook, неспособная интерпретировать такого рода переносы. Важно, что эту проблему тоже можно решить небольшим скриптом (заменяющим `=\n=` на `=`).

Резюме: я получил кучу файлов, которая нуждается в сортировке, коррекции и склеивании. Но главная задача — изъятие своих законных данных у капиталистической Винды — решена.
