Alex uns ich beschäftigen uns auch beruflich natürlich aus unterschiedlichen Perspektiven mit dem Thema GIT. Anbei ein Artikel den Alex zu diesem Thema geschrieben hat. Original Artikel ist hier aufrufbar: https://www.elastic2ls.com/github-backups/

 


Um schnell Github Backups für alle Repositories einer Organisation anzulegen kann das folgende Script sehr nützlich sein. Es liest per curl über die Github Api die Namen aller Repos aus. Am Ende des Scripts prüft es noch auf Backups die älter als 7 Tage sind und löscht diese.

find $BACKUP_DIR -name ‚*.tgz‘ -mtime +7|xargs rm -rf {} \;  > /dev/null

 

#!/bin/bash

BACKUP_DIR=“YOUR_BACKUP_DIR“
ORG=“YOUR_ORGANISATION“
HOST=“https://USERNAME:PASSWORD@github.com“
DATE=`date „+%Y-%m-%d“`

echo -n „Fetching list of repositories for ${ORG}…“
REPOLIST=$(curl –silent -k -u USERNAME:PASSWORD https://api.github.com/orgs/$ORG/repos -q | grep svn_url |cut -d / -f 5| cut -d ‚“‚ -f 1)
echo „found `echo $REPOLIST | wc -w` repositories.“

cd $BACKUP_DIR/

echo „“ && echo „=== BACKING UP ===“ && echo „“

for REPO in $REPOLIST ;do
git clone $HOST/$ORG/$REPO.git $ORG-$REPO-$DATE.git –quiet && tar cfz $ORG-$REPO-$DATE.git.tgz $ORG-$REPO-$DATE.git –remove-files
done

echo „“ && echo „=== Cleanup ===“ && echo „“
echo „Found $(find $BACKUP_DIR -name ‚*.tgz‘ -mtime +7 | wc -l) files to delete.“
find $BACKUP_DIR -name ‚*.tgz‘ -mtime +7|xargs rm -rf {} \;  > /dev/null

echo „“ && echo „=== DONE ===“ && echo „“
echo „GitHub backup completed.“ && echo „“