O clone do Git através do rsnapshot falha

1

Estou tentando executar meu script de backup personalizado por meio do rsnapshot. Ele simplesmente clona um determinado repositório git no diretório de trabalho atual. Funciona bem quando executado sem o 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/

Isso cria um diretório com um .git abaixo de myrepo / .git no local de backup e um erro:

# 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/*'

Ambos, o usuário rsnapshot e o root, obtiveram um ~ / .gitconfig em seus diretórios iniciais.

Também tentei executá-lo com o sudo. Isso resulta em:

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

Alguma ideia do que está errado? Talvez algumas variáveis env para git tenham que ser definidas?

    
por Dirk Eschler 19.02.2018 / 11:00

1 resposta

0

O problema era um diretório de trabalho não especificado. Aparentemente, o rsnapshot usa /var/cache/rsnapshot/tmp/ por padrão e /var/cache/rsnapshot é lido e gravável pelo usuário rsnapshot apenas (enquanto o backup_script é executado como root).

Meu script de backup agora altera o diretório de trabalho, efetua check-out para /home/rsnapshot/git_backup e esse diretório é feito backup usando uma diretiva backup normal.

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/

Agora eu tenho o problema, que os check-outs sincronizados (não os clonados) abaixo de /var/cache/rsnapshot/daily.0/localhost_git contêm apenas um diretório ~/.git e nada mais, mas esse é um problema diferente.

    
por 21.02.2018 / 11:04

Tags