几天前我安装了全新的 ubuntu 16.04 LTS。
我尝试使用 deja-dup 设置自动备份,就像在我的旧系统 (ubuntu 14.04) 上一样。我曾经从脚本启动 deja-dup,并且该脚本在 cron 中的预定时间执行,它运行良好。
我曾尝试在新系统上做同样的事情,但由于某种原因,它在从 cron 启动时无法运行,它显示“另一个备份操作已在运行”。
ps 辅助 | grep deja-dup 输出:
user 2909 0.0 0.1 378136 6944 ? Sl mars16 0:00 /usr/lib/x86_64-linux-gnu/deja-dup/deja-dup-monitor
user 23785 0.0 0.0 16004 2204 pts/27 S+ 10:51 0:00 grep --color=auto deja-dup
只有监视器在运行,我认为这没问题(也许我错了),我试图终止它并再次运行 cron,但没有运气。
我安装了 duplicity,并且运行简单的 deja-dup --backup 工作正常。我还尝试清理 .cache/deja-dup/,但没有成功。
以下是从 cron 运行的脚本:
#!/bin/sh
## test for an existing bus daemon, just to be safe
if test -z "$DBUS_SESSION_BUS_ADDRESS" ; then
## if not found, launch a new one
eval `dbus-launch --sh-syntax --exit-with-session`
fi
# Launch deja-dup
deja-dup --backup --display=:0
下面是 cron 行:
30 20 * * * /path/to/backup_script.sh
我还尝试在 backup_script.sh 中放入 DEJA_DUP_DEBUG=1,并将输出重定向到文本文件,但它只会创建文件而不执行任何其他操作。
欢迎提出任何建议,谢谢!
edit1:deja-dup 配置设置为使用 ssh 将文件备份到本地服务器。
答案1
对于那些可能遇到此问题的人,在阅读资料后,我发现此错误消息与会话总线有关...所以我去阅读了 ubuntu 手册页http://manpages.ubuntu.com/manpages/xenial/man1/dbus-launch.1.html并发现了描述中这个有趣的部分:
您可以指定要运行的程序;在这种情况下,dbus-launch 将启动会话总线实例,设置适当的环境变量,以便指定的程序可以找到总线,然后使用指定的参数执行指定的程序。请参阅下面的示例。
所以我把脚本改成了
#!/bin/bash
# Launch deja-dup with dbus-launch to get the session bus
dbus-launch deja-dup --backup --display=:0
并且它会按照 cron 预定的时间完美运行!