Автор Тема: Синхронизация каталогов  (Прочитано 6076 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Синхронизация каталогов
« : Октябрь 28, 2015, 16:52:53 »
Странно, что нет такой темы. Создаю не cтолько для выноса сюда своих находок, сколько для обмена опытом с теми, кто это дело давно освоил.

Итак, вдруг осознал, что под Ubuntu не так и много софта для синхронизации каталогов на разных машинах, разных пользователей.
Rsync всем хорош, кроме одного - он не для синхронизации, а для зеркалирования, что совсем не то при необходимости синхронизации каталогов разных пользователей, работающих одновременно в одной теме.

В репах ubuntu есть интересная софтина для синхронизации, с большими возможностями и работающая через ssh - Unison ( sudo apt-get install unison unison-gtk ), но не русифицирована (как и ее man).

После зондирования инета обнаружил варианты на Java (неинтересно) и для 64-х разрядной ubuntu (что не поставить на разные по возможностям машины, между которыми необходима синхронизация).

Может еще у кого-то есть на примете подходящий под ubuntu аналогичный софт ? Поделитесь опытом.
« Последнее редактирование: Октябрь 28, 2015, 16:54:24 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн sfs

  • Местный
  • *****
  • Сообщений: 722
    • PuppyRus-Arch
Re: Синхронизация каталогов
« Ответ #1 : Октябрь 29, 2015, 13:24:34 »
rsync - синхронизация
rsync --delete - зеркалирования
... или что Вы понимаете под этими терминами?
не русифицирована
Интернационализация (перевод)
Поделитесь опытом
В mc выбирать при копировании "Устаревшие" "отличающиеся по длине" и т.п.
В mc есть "Сравнить каталоги"
Минус - работает только интерактивно (скриптом не сделать)
« Последнее редактирование: Октябрь 29, 2015, 13:28:02 от sfs »

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: Синхронизация каталогов
« Ответ #2 : Октябрь 29, 2015, 13:46:47 »
Rsync не синхронизирует содержимое каталогов. Он работает лишь в одну сторону, чего мало для настоящей синхронизации. Так как обновление одного из каталогов должно передаваться и в другие, независимо от того, на какой машине запущен синхронизатор.

В этом плане Unison интересней. К тому же и у него передача изменений больших файлов оптимизируется протоколом, как и в rsync.  А это основной плюс rsync перед другими синхронизаторами.

В идеале желательно все это загнать в скрипт, запускаемый кнопкой с панели - типа "запустил и забыл".
« Последнее редактирование: Октябрь 29, 2015, 17:34:11 от ek-nfn »
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: Синхронизация каталогов
« Ответ #3 : Ноябрь 06, 2015, 17:46:42 »
Для любителей GUI в репах есть гномовский синхронизатор - Conduit. Этакий специфический с разделением синхронизируемых данных. Поставил ради интереса, но еще не попробовал. Unison интересней, так как позволяет автоматизировать синхронизацию любых компьютеров в сети через тот же cron с помощью скриптов.

Цитировать (выделенное)
Программа Conduit (www.conduit-project.org) построенная на гномьих библиотеках хотя, также предназначена для синхронизации, но ее функция несколько шире. Кроме синхронизации файлов между компьютерами, она позволяет снхронизировать фотографии, электронную почту, данные контактов, заметки, календарь и другую информацию со многими он-лайн сервисами и электронными устройствами (мобильные телефоны, iPod, PDA и другие). При необходимости данные автоматически конфертируются в нужный формат. Список сервисов, о которых знает Conduit довольно приличный: Flickr, Picasa, SmugMug, ShutterFly и другие.

Под KDE тоже есть пара утилит, но тут это неинтересно.
Devuan ASCII x32..x64

Оффлайн ek-nfn

  • Местный
  • *****
  • Автор темы
  • Сообщений: 1422
Re: Синхронизация каталогов
« Ответ #4 : Декабрь 04, 2015, 21:37:33 »
Поэкспериментировал с Unison в качестве скрипта по синхронизации настроек используемого софта и некоторых каталогов. Достойная прога, почти тот же rsync (включая и его метод передачи лишь измененой части файла, что важно для больших файлов), но работающая в любую сторону, в отличие от rsync .
Минусы - не смог разобраться с принципом работы опции исключения из "игнора" - -ignorenot. Да и сам автор скупо пишет, что логика ее работы необычная, но примеров ее использования не привел.

Алгоритм работы в скрипте довольно простой. Следует учитывать, что версии программы должны совпадать на разных машинах, ОС , дистрибутивах и т.д. 
1) В каталоге ~/.unicon создаем файлы конфигурации name.prf. Количество файлов определяется количеством заданий - сколько пар каталогов нужно синхронизировать, столько и создаем.
2) Заполняем каждый файл в соответствии с задачей. Если ничего игнорировать внутри каталога не нужно, то файл совсем простой. Лучший вариант создания и заполнения такого файла, включая и игнорирование каталогов-файлов внутри основного каталога, это через графический вариант unison-gtk.
Пример файла Thunar.prf . Синхронизируется лишь один файл. Решено тупым способом - через игнор остальных файлов, что неправильно при большом количестве файлов или появлении новых ненужных файлов. Но с опцией -ignorenot ничего не получилось.
root = /home/nfn/.config/Thunar
root = ssh://nfn@192.168.2.102//home/nfn/.config/Thunar
ignore = Name {renamerrc}
ignore = Name {thunarrc}
ignore = Name {accels.scm}
# Включение пакетного режима и автоматического ответа на вопросы
auto = true
batch = true
# Указываем сохранять права доступа и владельца
owner = true
times = true
# функция сжатия SSH
sshargs = -C


Сам скрипт синхронизации выглядит примерно так. Опция -ui text запускает программу в текстовом режиме. Запускать лучше в терминале кнопкой с панели.
#!/bin/bash
unison Thunar -ui text
unison Документы -ui text
unison gnote -ui text
unison scripts -ui text
unison orage -ui text
unison Архивы -ui text
unison Книги -ui text
unison БАЗА -ui text
unison Музыка -ui text
unison Музыка_SD -ui text


Файлы конфигурации определяют автоматическую синхронизацию без лишних вопросов, кроме случая, когда оба синхронизируемых файла были изменены после последней синхронизации. В таком случае в процессе синхронизации программа предлагает пользователю принять решение. Есть опция, определяющая главный компьютер - prefer, как понял, как раз для таких случаев, если нет желания участвовать в определении доминантной версии файла и хочется полностью автоматизировать процесс.
Не получилось синхронизировать каталог с SD карты через линк в домашней папке. Надо разбираться.

Мне понравилось, хотя со многим еще не разобрался.
Devuan ASCII x32..x64