githubのバックアップを取る

年末も近くなってきたのでgithubが落ちた時に備えてリポジトリのバックアップを取ることにしました。
以下のスクリプトを実行するとgithub以下にすべてのリポジトリがバックアップされます。

YOUR_ACCESS_TOKENはSign in to GitHub · GitHubで作れます。
Select scopesのところでreposの欄をすべてチェックしてトークンを作成してください。

#! /bin/bash

token=YOUR_ACCESS_TOKEN
curl "https://api.github.com/user/repos?access_token=${token}&per_page=100&affiliation=owner" 2>/dev/null -o tmp
repos=`cat tmp | grep ssh_url | cut -d" " -f 6 | sed -e 's/"//g' | sed -e 's/,//g'`
mkdir github
cd github
for r in ${repos}; do
    name=`echo ${r} | sed -e "s:git.*/::" -e "s:[.]git::"`
    git clone ${r}
    cd ${name}
    for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master `; do
        git branch --track ${branch#remotes/origin/} $branch
    done
    cd ..
done
rm tmp

これでgithubが落ちても安心ですね。