数日前に新しいubuntu 16.04 LTSをインストールしました。
古いシステム(ubuntu 14.04)で行ったように、deja-dupで自動バックアップを設定しようとしました。以前はスクリプトからdeja-dupを起動していましたが、このスクリプトは予定された時間にcronで実行され、ちゃんと動作していました。
新しいシステムで同じことをしようとしましたが、何らかの理由で、cronから起動したときに実行されず、「別のバックアップ操作が既に実行されています」と表示されます。
ps aux | 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を再実行しようとしましたが、運はありません。
重複をインストールし、単純な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を使用してローカルサーバーにファイルをバックアップするように設定されています。
この問題に遭遇する可能性のある人のために、ソースを読んだ後、このエラーメッセージはセッションバスに関連していることがわかりました...それで、ubuntu manpage 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からスケジュールされた時間に完全に実行されます!