09.02.2011 19:53
Дома у меня стоит сервер с файлопомойкой, на которой лежат все мои документы. И те же самые документы лежат на n900. Периодически я их редактирую, создаю и удаляю с обеих сторон, и хочу чтобы все изменения, сделанные на n900, сохранились на сервере и наоборот. Наверное многие, дочитав до этого места, поймут, что им тоже неплохо было бы так сделать.
Для этих целей, помимо облачного сервиса dropbox и его аналогов, существует программа unison. Она, подобно rsync, умеет локально или по сети отслеживать и зеркалировать изменения между файлами и директориями, но в отличии от rsync отслеживает изменения с каждой стороны, и по возможности приводит все к наиболее актуальному состоянию. На практике получается то, что описано в первом абзаце.
Тут обсуждение и ссылки на пакеты для maemo 4 и 5.
Вот пакет для n900.
И для примера мой скрипт синхронизации, который запускается на n900 через fcron по ночам или вручную по ярлыку на рабочем столе:
Очень удобно.
Для этих целей, помимо облачного сервиса 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
Очень удобно.