Git-Klon über rsnapshot schlägt fehl

Git-Klon über rsnapshot schlägt fehl

Ich versuche, mein benutzerdefiniertes Backup-Skript über rsnapshot auszuführen. Es klont einfach ein bestimmtes Git-Repository in das aktuelle Arbeitsverzeichnis. Es funktioniert einwandfrei, wenn es ohne rsnapshot ausgeführt wird.

/etc/rsnapshot.config:

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

Dadurch wird am Sicherungsspeicherort unterhalb von myrepo/.git ein Verzeichnis mit der Endung .git erstellt, und es tritt ein Fehler auf:

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

Sowohl der rsnapshot-Benutzer als auch Root haben eine ~/.gitconfig in ihren Home-Verzeichnissen.

Habe auch versucht, es mit sudo auszuführen. Das Ergebnis ist:

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

Irgendeine Idee, was schief läuft? Vielleicht müssen einige Umgebungsvariablen für Git festgelegt werden?

Antwort1

Das Problem war ein nicht angegebenes Arbeitsverzeichnis. Anscheinend verwendet rsnapshot /var/cache/rsnapshot/tmp/standardmäßig dieses und /var/cache/rsnapshotist nur für den rsnapshot-Benutzer lesbar und beschreibbar (wohingegen das Backup-Skript als Root ausgeführt wird).

Mein Backup-Skript ändert nun das Arbeitsverzeichnis, checkt aus /home/rsnapshot/git_backupund dieses Verzeichnis wird mit einer normalen backupAnweisung gesichert.

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/

Jetzt habe ich das Problem, dass die synchronisierten (nicht die geklonten) Checkouts unten nur ein Verzeichnis und sonst nichts /var/cache/rsnapshot/daily.0/localhost_gitenthalten , aber das ist ein anderes Problem.~/.git

verwandte Informationen