"작업의 타임스탬프 파일을 열 수 없습니다..."로 인해 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 코드로 대체하여 프로그램의 안정성을 높였습니다.

관련 정보