「ジョブのタイムスタンプファイルを開くことができません...」のため、anacronを介してタイムリーにバックアップを開始できません。

「ジョブのタイムスタンプファイルを開くことができません...」のため、anacronを介してタイムリーにバックアップを開始できません。

Back In Timeは、毎日外部ディスクが接続されるとすぐにバックアップを開始するように設定されています。これにより、Back In Timeで生成された設定ファイルを使用してanacronを起動するudevルールが作成されます。残念ながら、anacronはエラーを引き続き発生するためanacron: Can't open timestamp file for job 1_Main_profile: Read-only file system(システムログに表示されます)、バックアップは実行されません。 Back In Timeは、udevルール作成コマンドで手動で起動すると(rootユーザーと通常のユーザーとして)正しく実行されます。jdoe(GUIを介して手動で起動した場合でも、バックアップは正常に機能します。)

少なくともanacronが開くことができないファイルが何であるか、そしてその理由は何であるかを知っていればうれしいです。

udevルール:

ACTION=="add", ENV{ID_FS_UUID}=="dd68d7f7-054b-dae0-a4a2-4315acad138a", RUN+="/bin/su - 'jdoe' -c 'test -x /usr/sbin/anacron && test -e /home/jdoe/.config/backintime/anacrontab-dd68d7f7-054b-dae0-a4a2-4315acad138a && /usr/sbin/anacron -s -t /home/jdoe/.config/backintime/anacrontab-dd68d7f7-054b-dae0-a4a2-4315acad138a -S /home/jdoe/.local/share/backintime/anacron' &"

anacrontab、これでログ専用に変更されたため、元のファイル(なしlogger "… " ||)は手動で実行すると実際にバックアップを正常に開始できますが、自動的には起動できません。

$ cat /home/jdoe/.config/backintime/anacrontab-dd68d7f7-dae0-4315-a4a2-054bacad138a
SHELL=/bin/bash
PATH=/home/jdoe/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
DISPLAY=:0.0
1   0   1_Main_profile  /usr/bin/logger "would start backup now, but exiting, as you set in anacrontab :-)" || /usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 /usr/bin/backintime --backup-job >/dev/null 2>&1

ファイル/フォルダ(規則に準拠していないanacronコマンドを実行して「1_Main_profile」の権限を設定するudev):

$ ls -ld /home/jdoe/.local/share/backintime/anacron/
drwxrwxrwx 2 jdoe jdoe 4096 Jul 18 10:41 /home/jdoe/.local/share/backintime/anacron/
$ ls -l /home/jdoe/.local/share/backintime/anacron/
insgesamt 8
-rw------- 1 jdoe jdoe 9 Jul 18 10:42 1_Main_profile
$ groups jdoe
jdoe : jdoe adm cdrom sudo dip plugdev lpadmin sambashare vboxusers
$ ls -ld /var/spool/anacron/
drwxrwxr-x 2 root adm 4096 Apr 30  2016 /var/spool/anacron/
$ ls -l /var/spool/anacron/
insgesamt 12
-rw------- 1 root root 9 Jul 18 10:20 cron.daily
-rw------- 1 root root 9 Jun 29 09:07 cron.monthly
-rw------- 1 root root 9 Jul 18 10:24 cron.weekly

udev ルールの外部でコマンドを手動で開始します(例:上記の「を使用せずにバックアップを開始するrootvia」):sshlogger "…" ||

$ /bin/su - 'jdoe' -c 'strace /usr/sbin/anacron -s -t /home/jdoe/.config/backintime/anacrontab-dd68d7f7-054b-dae0-a4a2-4315acad138a -S /home/jdoe/.local/share/backintime/anacron &> /dev/shm/strace-anacron-backintime'
X11 connection rejected because of wrong authentication.

$ cat /dev/shm/strace-anacron-backintime
execve("/usr/sbin/anacron", ["/usr/sbin/anacron", "-s", "-t", "/home/jdoe/.config/backintime/"..., "-S", "/home/jdoe/.local/share/backin"...], [/* 26 vars */]) = 0
brk(NULL)                               = 0x562556b3c000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
mmap(NULL, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f75287a6000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=178056, ...}) = 0
mmap(NULL, 178056, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f752877a000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or directory)
open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\3\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1685264, ...}) = 0
mmap(NULL, 3791264, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f75281e8000
mprotect(0x7f752837d000, 2093056, PROT_NONE) = 0
mmap(0x7f752857c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x194000) = 0x7f752857c000
mmap(0x7f7528582000, 14752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f7528582000
close(3)                                = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f7528778000
arch_prctl(ARCH_SET_FS, 0x7f7528778700) = 0
mprotect(0x7f752857c000, 16384, PROT_READ) = 0
mprotect(0x5625560cc000, 4096, PROT_READ) = 0
mprotect(0x7f75287a9000, 4096, PROT_READ) = 0
munmap(0x7f752877a000, 178056)          = 0
brk(NULL)                               = 0x562556b3c000
brk(0x562556b5d000)                     = 0x562556b5d000
open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=3259968, ...}) = 0
mmap(NULL, 3259968, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f7527ecc000
close(3)                                = 0
open("./", O_RDONLY)                    = 3
chdir("/home/jdoe/.local/share/backintime/anacron") = 0
umask(000)                              = 022
rt_sigprocmask(SIG_BLOCK, NULL, [], 8)  = 0
close(0)                                = 0
open("/dev/null", O_RDONLY)             = 0
close(1)                                = 0
open("/dev/null", O_WRONLY)             = 1
close(2)                                = 0
open("/dev/null", O_WRONLY)             = 2
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f75287789d0) = 4473
exit_group(0)                           = ?
+++ exited with 0 +++

答え1

問題のタイムスタンプファイルはです/home/jdoe/.local/share/backintime/anacron/1_Main_profile。書き込み可能であることを確認してください。保存して削除することもできます。 Anacronは次に新しいものを作成します。

ただし、最新のBiTバージョン(現在の安定バージョンは1.1.20)にアップデートすることもお勧めします。しばらく前に、anacronの依存関係を純粋なPythonコードに置き換えて、プログラムの安定性を高めました。

関連情報