cronjob 中的 Syncevolution 以通过 caldav/arddav 同步 ubuntu 手机

1 sync calendar contacts ubuntu-touch

我想将我的联系人和日历从我的 Ubuntu 手机同步到一个自托管的 o​​wncloud 服务器。由于还没有开箱即用的支持,我尝试了这个解释。但是,这只适用于 ubuntu 手机的终端内。如果我尝试

syncevolution --sync slow owncloud calendar
Run Code Online (Sandbox Code Playgroud)

通过 adb 或从 cronjob,我得到

creating source registry: Cannot autolaunch D-Bus without X11 $DISPLAY
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?

ale*_*yet 5

我知道“syncevolution --sync slow owncloud calendar”应该只用于第一次同步。

之后你应该使用:

syncevolution owncloud calendar
Run Code Online (Sandbox Code Playgroud)

为了做一个 cron 工作,我遇到了同样的问题。对我有用的一种解决方案是:

方法一:

export DISPLAY=:0.0 && export DBUS_SESSION_BUS_ADDRESS=Yourdbussessioadress && /usr/bin/syncevolution owncloud calendar
Run Code Online (Sandbox Code Playgroud)

要获得 Yourdbussessioadress :

echo $DBUS_SESSION_BUS_ADDRESS
Run Code Online (Sandbox Code Playgroud)

方法 2: 我将这些命令放在一个类似的 syncevolution.sh 脚本中:

#!/bin/sh
# Synchronisation des calendriers syncevolution
export DISPLAY=:0.0 
export DBUS_SESSION_BUS_ADDRESS=Yourdbussessioadress 
syncevolution owncloud calendar

exit 0
Run Code Online (Sandbox Code Playgroud)

我已将此脚本放在 /home/phablet/bin 中,使其可执行并在 crontab -e 中执行此操作

@daily sh /home/phablet/bin/synccalendar.sh
Run Code Online (Sandbox Code Playgroud)

我仍然坚持一件事。$DBUS_SESSION_BUS_ADDRESS 值在 ubuntu 重启时发生变化。我在互联网上有一个其他脚本(使用命令 sed)将 $DBUS_SESSION_BUS_ADDRESS 的良好价值放在 syncevolution.sh 脚本中。我已将此脚本放在 /etc/rc.local 中以在 ubuntu 重新启动时完成这项工作。但它对我不起作用(就像重新启动后 $DBUS_SESSION_BUS_ADDRESS 是空的一样)

如果有人可以提供更多帮助。

22/04/15 更新:

用这些命令替换“export DBUS_SESSION_BUS_ADDRESS=Yourdbussessioadress”:

export DBUS_SESSION_BUS_ADDRESS=$(ps -u phablet e | grep -Eo 'dbus-daemon.*address=unix:abstract=/tmp/dbus-[A-Za-z0-9]{10}' | tail -c35)
Run Code Online (Sandbox Code Playgroud)

它对我来说就像一个魅力(使用 sh 脚本使用方法 2 进行测试,其中“phablet”是 ubuntu touch 的默认用户)。感谢 KDE 论坛,我在那里找到了这些命令行。

(下一步 :

  1. 找到一种使用 ssh 使用 rsync 在个人服务器上备份照片的方法,为什么不在备份 SMS&MMS、一些配置文件、...

  2. 在 ubuntu touch 上挂载 sftp 服务器)