Большой перерыв связанный с командировкой и новая тема для поста. Небольшая, но актуальная. Речь пойдет о Skype. Суть проблемы в синхронизации истории сообщений - до отлета я использовал стационарный компьютер, а в процессе командировки пользовался ноутбуком. И на каждой машине своя история сообщений. Возможно, для большинства, данный факт не является проблемой, однако моя история сообщений содержит важную переписку по работе, и мне важно иметь ее всю в одном месте. Как это сделать? Читаем далее.
Корень “проблемы” в распределенном методе работы Skype. В отличие от, скажем, Evernote вся история сообщений и звонков не загружается на какой-либо главный сервер с целью дальнейшей синхронизации, а хранится на локальных машинах пользователей вступающих в процесс общения. Skype для работы использует P2P-соединения, а не клиент-серверную модель. Такая архитектура называется P2P-архитектурой (pear-to-pear). Единственной централизованной вещью в Skype является центральный сервер идентификации, требуемый лишь для установки связи между пирами (пользователями). На этом же сервере еще хранятся учетные записи пользователей и копии их списка контактов. После установки связи, обмен идет строго между участниками соединения.
Отмечу, что акцент я делал на сохранении и синхронизации именно текстовых сообщений не рассматривая возможность синхронизации видеозвонков и переданных файлов (хотя описываемый метод очень прост и может включать в себя синхронизацию и того и другого).
Возможно стоило бы упомянуть про разные сервисы облегчающие синхронизацию Skype аккаунтов. Однако, лично я даже не рассматривал возможность их использования. Во-первых, большая часть из них - платные, во-вторых, мне банально не нужна вся их функциональность.
Суть синхронизации в переносе профиля в Dropbox (здесь я предполагаю, что пользователь в состоянии поставить и настроить Dropbox). Для того, чтобы работа Skype не нарушилась, создадим ссылку на перенесенную папку таким образом, что Skype и не заметить подмены. Ссылку только надо сделать не простую, а Hard Link a.k.a Junction. Минус данного метода синхронизации в том, что в случае запуска нескольких версий Skype'а будет конфликт синхронизации. Поэтому для корректной работы этой синхронизации, запускать Skype следует только в случае, если на других машиных он выключен.
В моем случае, перед переносом профиля, необходимо было объединить две базы - на стационарном компьютере и на командировочном ноутбуке.
Это можно сделать очень просто заюзав программу Skyperious. Программа написана на Python'е и обладает неплохой функциональностью (из справки на github'е):
Я же использовал лишь одну ее функцию - слияние двух баз 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\
Также имейте в виду что пути - дефолтные. Это значит что при установке вы ничего не меняли. В ином случае, скорректируйте путь и команды соответственно.
Теперь все что нам надо сделать - это:
Первый два пункта сложности вызвать не должны. Смотрим третий.
Теперь немного о том, как же все таки создать требуемую ссылку. Что есть и зачем нужны Soft Link и Hard Link, а также к чему относится SymLink и Junction.
Symbolic Links - всего лишь продвинутые ярлыки (shortcuts). И могут быть созданы как для файла, так и для директории (папки). Другое название - SymLinks. Есть два типа ссылок такого рода - Soft и Hard.
Junction по сути является Hard Symbolic Link‘ом на директорию.
Для чего еще можно использовать Symlinks?
И прочее, и прочее… Имейте в виду, что работа с созданием символьных ссылок требует прав “Create symbolic links”, так что делайте все операции от имени Администратора либо используйте пользователя с наличием этого права.
В зависимости от версий Windows есть несколько вариантов создания таких ссылок.
Для Windows XP придется воспользоваться внешним средством, так как встроенной (builtin) команды в CMD нет.
Тут есть два варианта (на самом деле больше, но рассмотрим только эти):
Как работать с программой, указанной во второй опции, подробно написано в статье “Complete Guide to Symbolic Links (symlinks) on Windows or Linux” в разделе “Create Symlinks in Any Edition of Windows in Explorer”.
Я же использовал первый вариант, поэтому о нем подробнее:
Junction v1.06 - Windows junction creator and reparse point viewer
Copyright (C) 2000-2010 Mark Russinovich
Sysinternals - www.sysinternals.com
The first usage is for displaying reparse point information, the
second usage is for creating a junction point, and the last for
deleting a junction point:
usage: D:\junction.exe [-s] [-q] <file or directory>
-q Don't print error messages (quiet)
-s Recurse subdirectories
usage: D:\junction.exe <junction directory> <junction target>
example: junction d:\link c:\windows
usage: D:\junction.exe -d <junction directory>
Создание 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. В случае если нет коннекта, просто перелогиньтесь.
« Previous Blog Post | Back to top | Next Blog Post »