RSnapshot을 통한 Git 복제가 실패합니다.

RSnapshot을 통한 Git 복제가 실패합니다.

rsnapshot을 통해 사용자 정의 백업 스크립트를 실행하려고 합니다. 단순히 주어진 git 저장소를 현재 작업 디렉토리에 복제합니다. rsnapshot 없이 실행하면 제대로 작동합니다.

/etc/rsnapshot.config:

backup_script   /usr/local/bin/gitbackup.py -r https://foo.bar/myrepo.git -u username -f /root/.pwd git/myrepo.git/

그러면 백업 위치에 myrepo/.git 아래에 .git이 있는 디렉터리가 생성되고 오류가 발생합니다.

# rsnapshot -v daily
[...]
error: could not lock config file /var/cache/rsnapshot/tmp/myrepo/.git/config: No such file or directory
fatal: could not set 'remote.origin.fetch' to '+refs/heads/*:refs/remotes/origin/*'

rsnapshot 사용자와 루트 모두 홈 디렉터리에 ~/.gitconfig를 가지고 있습니다.

또한 sudo로 실행해 보았습니다. 그 결과는 다음과 같습니다.

Cloning into 'myrepo'...
/bin/rm -rf /var/cache/rsnapshot/tmp/ 
/bin/rm: cannot remove '/var/cache/rsnapshot/tmp/myrepo/.git': Directory not empty
----------------------------------------------------------------------------
rsnapshot encountered an error! The program was invoked with these options:
/usr/bin/rsnapshot -v daily 
----------------------------------------------------------------------------
ERROR: Warning! /bin/rm failed.
ERROR: Could not rm_rf("/var/cache/rsnapshot/tmp/");
rm -f /var/run/rsnapshot.pid 
fatal: remote-curl: fetch attempted without a local repo

무슨 일이 일어나고 있는지 아시나요? 아마도 git에 대한 일부 환경 변수를 설정해야 합니까?

답변1

문제는 지정되지 않은 작업 디렉터리였습니다. 분명히 rsnapshot은 /var/cache/rsnapshot/tmp/기본적으로 사용되며 /var/cache/rsnapshotrsnapshot 사용자만 읽고 쓸 수 있습니다(backup_script는 루트로 실행됨).

내 백업 스크립트는 이제 작업 디렉토리를 변경하고 체크아웃하며 /home/rsnapshot/git_backup이 디렉토리는 일반 backup지시어를 사용하여 백업됩니다.

backup_script   /usr/local/bin/gitbackup.py -r https://foo.bar/myrepo.git -u username -f /root/.pwd -w /home/rsnapshot/git_backup  git_tmp/myrepo.git/
backup  /home/rsnapshot/git_backup/ localhost_git/

/var/cache/rsnapshot/daily.0/localhost_git이제 아래의 동기화된(복제된 것이 아닌) 체크아웃에는 디렉터리 만 포함되어 있고 다른 것은 아무것도 포함되어 있지 않다는 문제가 발생했습니다 ~/.git. 그러나 이는 다른 문제입니다.

관련 정보