orgzly与linux桌面使用私家git仓库实现自动同步


#1

折腾了两天,终于实现orgzly与linux自动同步.记录分享一下

材料

准备

假设用于同步的仓库名为:docs

git服务器

位于公网的linux服务器

初始化git仓库

cd ~
mkdir docs
cd docs
git init --bare

sshd

建立有关帐号,允许远程登录,允许证书登录

手机

手机端同步简单操作可以用magit, 但无法自动化,需要手动同步

  • 安装orgzly/termux/magit

termux

  • 设置termux权限,允许后台运行,授权termux访问存储卡空间,我的手机是/mnt/sdcard
  • 运行termux, 安装crond, git, 建立同步目录:/mnt/sdcard/orgzly
  • 创建本地证书(无密码)
ssh-keygen
  • 设置自动登录
ssh-copy-id user@host
  • 克隆仓库
cd /mnt/sdcard/orgzly && git clone ssh://host:port/~/docs
  • 自己想办法把git-sync复制到termux目录中
  • crontab -e 编辑定时任务,加入如下任务(每5分钟同步一次,可以自己根据需要修改):
*/5 * * * * cd /mnt/sdcard/docs && git-sync

orgzly

设置->同步->存储库->添加->目录 选择orgzly/docs

linux端

用linux工作的应该自会折腾了,跟termux中的设置类似

顺便分享一段i3blocks的代码,可以把org日程显示在i3状态栏上(与同步无关)

#!/bin/bash
if [ "$BLOCK_BUTTON" = "3" ]; then
    now=$(date '+%Y-%m-%d %H:%M:%S(%a/%V)')
    emacs --batch --user $USER --eval "(org-batch-agenda \"d\")" 2> /dev/null \
        | zenity --list  --width=800 --height=800 --text="TODO(今天:$now)" --column="事项:"
    exit
fi

[ ! -f /tmp/todo ] && echo 0 > /tmp/todo
n=$(cat /tmp/todo)
n=$(expr $n + 1)
echo $n > /tmp/todo
todo=$(emacs \
           --batch\
           --user\
           $USER\
           --eval "(progn (org-agenda-list nil nil 'week) (append-to-file nil nil \"/dev/stdout\"))" \
           2> /dev/null\
           | grep "^ .*"\
           | grep -v "Deadline"\
           | grep -v "\.\.\.\.\."\
    )
lines=$(echo "$todo" | sed '/^$/d' | wc -l)
if [[ 0 -eq $lines ]]; then
    echo "NOTHING TODO"
    echo
    echo \#00FFFF
    exit
fi
if [[ $n -gt $lines ]]; then
    n=1
    echo 0 > /tmp/todo
fi
text=$(echo "$todo" | head -n $n | tail -n 1)
text=$(echo "$text" | sed 's/.*my-todo: *//')
days=$(echo "$text" | sed 's/.*In *\(.*\)\s *d.*/\1/')
text=$(echo "$text" | sed 's/.*TODO \(.*\)/\1/')
echo "[$n/$lines] ${days}d $text"
echo
if [[ $days -le 3 ]]; then
    echo \#FF0000
else
    echo \#00FFFF
fi




#2

推荐syncthing,不必这么麻烦。


#3

用法类似,不过orgzly感觉还是不够方便,如果支持webdav直接同步就方便了


#4

最新版的orgzly已经支持webdav了


#5

我现在同步用的是 Dropbox,两端同步的主要目的是做 GTD。

用 Dropbox 的原因是我在 sdcard 中能找到 Dropbox 离线保存的 org 文件,并且修改这些文件也达到了立即同步的效果。而我尝试的 Onedrive 和 Google Drive 要么找不到离线保存的文件,要么同步不够即时。

我在手机上,无论是在 Dropbox 还是其他同步软件中,选择用 其它方式打开 org 文件,都没有出现一个合适的程序,只有邮件、QQ 之类的。我特意下载了一些文本编辑器,但是这些编辑器还是不会出现在候选项中。不知道大家有没有好的推荐。


#6

已放弃org 转投rst


#7

Dropbox+1,感觉Dropbox挺好用


#8

:sunglasses:赶紧去试试


#9

终于支持webdav了,唯一的遗憾就是图片的路径问题了