среда, 25 июня 2014 г.

Яндекс.Диск в Ubuntu

У Яндекс.Диска есть официальный клиент под Linux.  Однако, в отличие от клента для Windows, он не имеет графического интефейса и работает из командной строки.  Уже не помню точно почему, но почему-то это показалось мне не лучше связки davfs-rsync.
Подробности под катом ...


Порядок работы

При помощи davfs2 монтируем наше хранилище как удаленную файловую систему. Теперь можно работать почти также, как если бы все хранилось у нас на компьютере.  Именно почти, потому что на самом деле все хранится удаленно и операции (открыть папку, удалить файл) будут происходить с задержкой.  Чтобы избежать задержек, можно создать локальную (рабочую) копию всех файлов и время от времени производить синхронизацию рабочией копии с примонтированным Яндекс.Диском.  Очевидно, за это придется заплатить дисковым пространством.  Для синхронизации можно использовать rsync.  А чтобы сделать процесс автоматическим можно настроить cron, чтобы он периодически запускал скрипт синхронизации.
Для быстрого старта, конечно, лучше установить клиент.  Однако, если нужно что-то нестандартное --- сделать можно практически все... почитав документацию, форумы и stackoverflow

 

Краткая последовательность действий

Для подробностей и объяснений см. приведенные ниже ссылки


Устновить davfs2:

sudo apt-get install davfs2

Добавить текущего пользователя в группу davfs2: 

sudo adduser $USER davfs2

Разрешить непривеллигированным пользователям монтировать удаленную файлову систему:

sudo dpkg-reconfigure davfs2 

Создать папку, в которую смонтируется Яндекс.Диск:

sudo mkdir /media/yandex.disk

можно монтировать в любую папку, но если монтировать в /media, то в файл-менеджере автоматически появится закладка для монитрования/размонтирования (как для usb флэшки).

В файл /etc/fstab добавить строку:

https://webdav.yandex.ru          /media/yandex.disk/      davfs          noauto,user    0 0

В файл ~/.davfs/secrets добавить строку:

https://webdav.yandex.ru user@yandex.ru myPassword 

(заменить user@yandex.ru и myPassword на свои логин и пароль) и установить ограничения на доступ к файлу:

chmod 600 ~/.davfs2/secrets 

(без этого не заработает).

Наконец, для подключения (монитрования) Яндекс.Диска в файловом менеджере нажать появившуюся закладку yandex.disk или в терминале набрать:

mount https://webdav.yandex.ru

если все прошло по плану, то в созданной ранее папке /media/yandex.disk появятся файлы из вашего Яндекс.Диска.  Если возникли проблемы --- пишите в комментарии, попробуем разобраться.  Можно работать прямо с ними.  Если задержки при работе будут большими, то можете создать локальную копию файлов или отдельных папок (например в домашнюю директорию) и периодически синхронизировать файлы в /media/yandex.disk с локальной копией.  Для синхронизации можно использовать rsync и cron.  Все подробности в материалах ниже.

Материалы

Материалы, которые помогли мне настроить все это дело приведены ниже

 

Подключение по davfs и синхронизация rsync

Пример скрипта подключения и синхронизации:

http://disk-blog.ya.ru/1088/1113#reply-disk-blog-1113

Инструкции по подключнию удаленной файловой системы с помощью davfs2:
http://help.ubuntu.ru/wiki/davfs2

Подключение удаленной фс и шифрование папок в облаке:
http://habrahabr.ru/post/143821/

Синхронизация (только) отдельных папок


http://stackoverflow.com/a/15701772


Автоматическая синхронизация

Пошаговая инструкция по автоматической синхронизации с помощью rsync+cron

Чтение логов rsync

Расшифровка символов, которые печатает rsync в ходе работы:

Руководство по rsync

Очень советую не пренебрегать руководством: оно написано в дружественной манере и содержит примеры с объяснениями.  Кроме того, есть перевод:

Скрипт синхронизации

Мой скрипт синхронизации.  Файл дан для примера.  Скрипт никак не учитывает конфликт версий.  Это значит, если вы отредактировали один и тот же файл на двух разных компьютерах, то версия с более поздним временем сохранения потрет версию с более ранним --- хотя ценные изменени есть в обеих версиях, одна из которых будет утеряна,  т.е. будет потеряна часть (и вполне возможно важная часть) работы. Официальный клиент Яндекс.Диска, насколько я помню, разрешает конфликт, переименовывая один из файлов.  Таким образом, пользователь имеет возможность сам решить, что делать дальше с разными версиями.  В скрипте такого нет.  Выхода два: либо как-то это настроить (может параметры rsync помогут, а может нужен другой подход), либо не допускать таких конфликтов

Скрипт: https://yadi.sk/d/RzeTVKydUwCGb
Файл со списком включенных директорий:  https://yadi.sk/i/e32lncPRUwJcK (нужен для работы скрипта)

Замечания и дополнения приветствуются в комментариях

Комментариев нет:

Отправить комментарий