Пользователи appdata roaming Skype — Синхронизация Skype аккаунта через Dropbox
Большой перерыв связанный с командировкой и новая тема для поста. Небольшая, но актуальная. Речь пойдет о Skype. Суть проблемы в синхронизации истории сообщений — до отлета я использовал стационарный компьютер, а в процессе командировки пользовался ноутбуком. И на каждой машине своя история сообщений. Возможно, для большинства, данный факт не является проблемой, однако моя история сообщений содержит важную переписку по работе, и мне важно иметь ее всю в одном месте. Как это сделать? Читаем далее.
Архитектура Skype
Корень «проблемы» в распределенном методе работы Skype. В отличие от, скажем, Evernote вся история сообщений и звонков не загружается на какой-либо главный сервер с целью дальнейшей синхронизации, а хранится на локальных машинах пользователей вступающих в процесс общения. Skype для работы использует P2P-соединения, а не клиент-серверную модель. Такая архитектура называется P2P-архитектурой (pear-to-pear). Единственной централизованной вещью в Skype является центральный сервер идентификации, требуемый лишь для установки связи между пирами (пользователями). На этом же сервере еще хранятся учетные записи пользователей и копии их списка контактов. После установки связи, обмен идет строго между участниками соединения.
Переносим профиль
Отмечу, что акцент я делал на сохранении и синхронизации именно текстовых сообщений не рассматривая возможность синхронизации видеозвонков и переданных файлов (хотя описываемый метод очень прост и может включать в себя синхронизацию и того и другого).
Возможно стоило бы упомянуть про разные сервисы облегчающие синхронизацию Skype аккаунтов. Однако, лично я даже не рассматривал возможность их использования. Во-первых, большая часть из них — платные, во-вторых, мне банально не нужна вся их функциональность.
Суть синхронизации в переносе профиля в Dropbox (здесь я предполагаю, что пользователь в состоянии поставить и настроить Dropbox). Для того, чтобы работа Skype не нарушилась, создадим ссылку на перенесенную папку таким образом, что Skype и не заметить подмены. Ссылку только надо сделать не простую, а Hard Link a.k.a Junction. Минус данного метода синхронизации в том, что в случае запуска нескольких версий Skype’а будет конфликт синхронизации. Поэтому для корректной работы этой синхронизации, запускать Skype следует только в случае, если на других машиных он выключен.
В моем случае, перед переносом профиля, необходимо было объединить две базы — на стационарном компьютере и на командировочном ноутбуке.
Мерджим базы Skype аккаунта с разных машин
Это можно сделать очень просто заюзав программу Skyperious. Программа написана на Python’е и обладает неплохой функциональностью (из справки на github’е):
- поиск по всей истории и контактам;
- просмотр, фильтрация и экспорт истории чата, просмотр статистики;
- просмотр любых таблиц и экспорт данных из них;
- изменение, удаление, добавление любых данных в базе;
- выпонение SQL скриптов напрямую.
Я же использовал лишь одну ее функцию — слияние двух баз Skype’а. Вот как это выглядит:

Сливать можно как целиком базы, так и отдельные контакты.
Переносим папку профиля.
Адрес папки с пользовательским профилем разнится для машин с Windows XP и Windows 7:
Windows XP
C:\Documents and Settings\[USER NAME]\Application Data\Skype\[Skype Name]
Windows 7 and Windows 8
C:\Users\[USER NAME]\AppData\Roaming\Skype\[Skype Name]\
Замечание! В Windows 8 есть два пути к этим данным: — C:\Users\[USER NAME]\AppData\Roaming\ and — C:\Users\[USER NAME]\Application Data\
Однако, пусть это вас не смущает. C:\Users\[USER NAME]\Application Data\ лишь ссылка (junction) на папку C:\Users\[USER NAME]\AppData\Roaming\
Также имейте в виду что пути — дефолтные. Это значит что при установке вы ничего не меняли. В ином случае, скорректируйте путь и команды соответственно.
Теперь все что нам надо сделать — это:
- выйти из Skype’а на всех машинах,
- перенести базу данных Skype’а в вашу папку Dropbox. На самом деле, достаточно всего лишь перенести папку \[Skype Name]\ в директории Skype: Skype\[Skype Name]\, однако я перенес полностью всю папку (методом Cut & Paste), благо весит она у меня очень мало. Для примера предположим, папка Dropbox куда вы перенесли свой профиль находится на диске D:/ и полный путь, скажем, следующий: D:\Dropbox\Skype\,
- cоздать ссылку в корневой директории профиля Skype на перенесенную папку D:/Dropbox/Skype
Первый два пункта сложности вызвать не должны. Смотрим третий.
Разбираемся с типами ссылок в Windows
Теперь немного о том, как же все таки создать требуемую ссылку. Что есть и зачем нужны Soft Link и Hard Link, а также к чему относится SymLink и Junction.
Symbolic Links — всего лишь продвинутые ярлыки (shortcuts). И могут быть созданы как для файла, так и для директории (папки). Другое название — SymLinks. Есть два типа ссылок такого рода — Soft и Hard.
- Soft Symbolic Link по сути есть обычный ярлык и при клике на таком ярлыке (созданном, на пример, для папки) будет осуществлен редирект в ту папку, куда он указывает.
- Однако, в случае с Hard Symbolic Link ситуация иная — система воспринимает такую ссылку на файл или директорию как существующую на самом деле — на диске. Использование такой ссылки позволяет обмануть сторонние программы — они даже не поймут что перед ними не файлы, а лишь сслыки на них.
Junction по сути является Hard Symbolic Link‘ом на директорию.
Для чего еще можно использовать Symlinks?
- синхронизация с Dropbox любой папки любого приложения — как раз наш случай,
- просто перемещение любой папки с любым системным контентом в любое место,
- перемещение папок с мультимедиа (Music/Pictures/Videos) в удобное для вас место или на другой диск, но чтобы при этом они виделись разными программами как лежащими в стандартных директориях.
И прочее, и прочее… Имейте в виду, что работа с созданием символьных ссылок требует прав «Create symbolic links», так что делайте все операции от имени Администратора либо используйте пользователя с наличием этого права.
Создаем Junction на папку с профилем.
В зависимости от версий Windows есть несколько вариантов создания таких ссылок.
Для Windows XP придется воспользоваться внешним средством, так как встроенной (builtin) команды в CMD нет.
Тут есть два варианта (на самом деле больше, но рассмотрим только эти):
- воспользоваться утилитой Junction из набора Sysinternals или
- поставить Link Shell Extension
Как работать с программой, указанной во второй опции, подробно написано в статье «Complete Guide to Symbolic Links (symlinks) on Windows or Linux» в разделе «Create Symlinks in Any Edition of Windows in Explorer».
Я же использовал первый вариант, поэтому о нем подробнее:
Создание Junction:
Windows XP
[%PATH_TO_JUNCTION_EXE%]\junction.exe C:\Documents and Settings\[USER NAME]\Application Data\Skype D:\Dropbox\Skype\
Для версий Windows старше XP (начиная с Windows Vista), Microsoft добавила утилиту mklink.
Создание Junction:
Windows 7
mklink /D C:\Users[USER NAME]\AppData\Roaming\Skype D:\Dropbox\Skype\
-
/D — создание Soft Symbolic Link, ссылки, идентичной обычному ярлыку в Windows. Опция по-умолчанию
-
/H — создание Hard Symbolic Link на файл
-
/J — создание Hard Symbolic Link на директорию (Junction)
Полное описание команды смотрим на сайте microsoft.
Ну вот и все, после создания ссылки, можно запустить Skype. В случае если нет коннекта, просто перелогиньтесь.
Ссылки
- Using Symlinks in Windows Vista
- Complete Guide to Symbolic Links (symlinks) on Windows or Linux
- Скачать утилиту Junction и почитать о ней можно на официальной странице Windows Sysinternals.
- Inside the Windows Vista Kernel: Part 1, раздел «File-Based Symbolic Links» позволит узнать больше о типах ссылок в Windows.
- Репозиторий Skyperious на Github.com — https://github.com/suurjaak/Skyperious
" Previous Blog Post | Back to top | Next Blog Post "