Пользователи 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 нет.

Тут есть два варианта (на самом деле больше, но рассмотрим только эти):

  1. воспользоваться утилитой Junction из набора Sysinternals или
  2. поставить 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. В случае если нет коннекта, просто перелогиньтесь.

Ссылки

  1. Using Symlinks in Windows Vista
  2. Complete Guide to Symbolic Links (symlinks) on Windows or Linux
  3. Скачать утилиту Junction и почитать о ней можно на официальной странице Windows Sysinternals.
  4. Inside the Windows Vista Kernel: Part 1, раздел «File-Based Symbolic Links» позволит узнать больше о типах ссылок в Windows.
  5. Репозиторий Skyperious на Github.com — https://github.com/suurjaak/Skyperious

" Previous Blog Post | Back to top | Next Blog Post "

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.