从 cron 启动时 Deja-dup 备份已在运行

从 cron 启动时 Deja-dup 备份已在运行

几天前我安装了全新的 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 预定的时间完美运行!

相关内容