La clonación de Git a través de rsnapshot falla

La clonación de Git a través de rsnapshot falla

Estoy intentando ejecutar mi script de copia de seguridad personalizado a través de rsnapshot. Simplemente clona un repositorio git determinado en el directorio de trabajo actual. Funciona bien cuando se ejecuta sin 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/

Esto crea un directorio con un .git debajo de myrepo/.git en la ubicación de la copia de seguridad y un error:

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

Tanto el usuario de rsnapshot como el root obtuvieron un ~/.gitconfig en sus directorios de inicio.

También intenté ejecutarlo con sudo. Esto resulta en:

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

¿Alguna idea de qué está pasando? ¿Quizás sea necesario configurar algunas variables de entorno para git?

Respuesta1

El problema era un directorio de trabajo no especificado. Aparentemente, rsnapshot se usa /var/cache/rsnapshot/tmp/de forma predeterminada y /var/cache/rsnapshotsolo el usuario de rsnapshot puede leerlo y escribirlo (mientras que backup_script se ejecuta como root).

Mi secuencia de comandos de respaldo ahora cambia el directorio de trabajo, se registra /home/rsnapshot/git_backupy se realiza una copia de seguridad de este directorio usando una backupdirectiva 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/

Ahora tengo el problema de que los pagos sincronizados (no los clonados) a continuación /var/cache/rsnapshot/daily.0/localhost_gitsolo contienen un ~/.gitdirectorio y nada más, pero ese es un problema diferente.

información relacionada