1

Тема: Unison - двустороннее зеркалирование файлов

Дома у меня стоит сервер с файлопомойкой, на которой лежат все мои документы.  И те же самые документы лежат на n900. Периодически я их редактирую, создаю и удаляю с обеих сторон, и хочу чтобы все изменения, сделанные на n900, сохранились на сервере и наоборот. Наверное многие, дочитав до этого места, поймут, что им тоже неплохо было бы так сделать.

Для этих целей, помимо облачного сервиса dropbox и его аналогов, существует программа unison. Она, подобно rsync, умеет локально или по сети отслеживать и зеркалировать изменения между файлами и директориями, но в отличии от rsync отслеживает изменения с каждой стороны, и по возможности приводит все к наиболее актуальному состоянию. На практике получается то, что описано в первом абзаце.

Тут обсуждение и ссылки на пакеты для maemo 4 и 5.
Вот пакет для n900.

И для примера мой скрипт синхронизации, который запускается на n900 через fcron по ночам или вручную по ярлыку на рабочем столе:

#!/bin/bash

function syncfiles {    
    if [ "$5" != "-verbose" ]; then
        arg1="-batch"
        arg2="-silent"
    fi
    unison $arg1 $arg2 $1 $2
    case $? in
        0) dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"$3 - синхронизировано"
        r=0
        ;;
        *) dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteDialog string:"$3 - не синхронизировано" uint32:0 string:"OK"
        r=1
        ;;
    esac
    status=$(($4 + $r))
    return $status
}

starttime=$(date +%s)

#192.168.15.1 - сервер, 9889 - порт ssh на сервере
sudo ping -c 2 192.168.15.1 > /dev/null

if [ "$?" -gt "0" ]; then
    dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"Не пингуется"
else
    dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"Начали"

    syncfiles /home/user/files/docs ssh://user@192.168.15.1:9889//files0/docs "Документы" 0 $1

    syncfiles /home/user/files/calls ssh://user@192.168.15.1:9889//files0/phone/calls "Записи звонков" $? $1

    syncfiles /home/user/MyDocs/eCoach ssh://user@192.168.15.1:9889//files0/phone/eCoach "GPX1" $? $1
    syncfiles /home/user/files/gpslogs ssh://user@192.168.15.1:9889//files0/phone/gpslogs "GPX2" $? $1

    syncfiles /home/user/MyDocs/DCIM ssh://user@192.168.15.1:9889//files0/phone/DCIM "Фото" $? $1

    syncfiles /home/user/files/music ssh://user@192.168.15.1:9889//files0/phone/music "Музыка" $? $1

    endtime=$(date +%s)
    totaltime=$(($endtime - $starttime))
    if [[ "$?" -lt "1" && "$1" != "-silent" ]]; then
        dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteDialog string:"Всё синхронизировано за $totaltime сек." uint32:0 string:"OK"
    fi
fi

Очень удобно.

N800 5.2008.43-7 > N900 10.2010.19-1

2

Re: Unison - двустороннее зеркалирование файлов

Полезная вещь

N̶8̶0̶0̶ + N̶8̶1̶0̶ + N̶9̶0̶0̶ + N̶9̶5̶0̶ + N̶9̶ ̶C̶y̶a̶n̶ + N̶9̶ ̶B̶l̶a̶c̶k̶

3

Re: Unison - двустороннее зеркалирование файлов

А я юзаю SVN

iPad3, Ainol Novo7 Elf