LoginSignup
8
9

More than 5 years have passed since last update.

Github EnterpriseのBackup Utilitiesを使う

Last updated at Posted at 2014-10-28

使っていますか?Github Enterprise

かなり便利ですよね。
そんなわけで、、最近Github Entepriseの管理者とか、何故かやっちゃってるわけですよ。で、Backupしなきゃなーとおもって、tarballとか、rsyncとか、バックアップのコマンド1つずつsshごしに叩くとか、いろいろあるんですが、とりあえずGithub謹製のBackup Utilitesを使おうと思って、まあ簡単なんですけど、とりあえず書いておこうと思います。

Backup Utilities特徴ですが、差分のみをバックアップ取るらしいので従来のバックアップ方式よりもとても早い。また、メンテナスモードに入ることなくバックアップが取れます。
しかし、それも11.10.341以上のバージョンのみ。それ以下の場合は、全てのバックアップをtarballで取るだけのツールになってしまうようなのでご注意を。

see also here

手順

事前準備

まず、Github Enterprise(以下GHE)を、最低でも11.10.341以上にアップデートしましょう。
ってか、常に最新版を追っておきましょう。最近heartbleedとか、shellshockとか、うるさいし。GHEは大体1営業日程度でアップデートしてくれています。(確か。)
あと、Gitコマンドが使える鯖が必要です。MacユーザならきっとMacでもできるはず。自分はUbuntuが乗ってる鯖を適当に用意しました。
このバックアップ鯖がport22のsshでGHEと通信できる、公開鍵がマネジメントコンソールに登録されていることを確認します。
鍵がない場合はssh-keygenで作ればいいじゃない!

Backup Utilitiesを準備する

まずスクリプトを持ってくる。

git clone -b stable https://github.com/github/backup-utils.git

次に、cloneしたディレクトリに移動し、設定ファイルをコピーします。

cp backup.config-example backup.config

その後、お好みのエディタでbackup.configを開きます。僕はvimで開きます。

vim backup.config

そうするとこんなかんじのファイルが見えるはず。

# GitHub Enterprise backup configuration file

# The hostname of the GitHub Enterprise appliance to back up. The host
# must be reachable via SSH from the backup host.
GHE_HOSTNAME=""

# Path to where backup data is stored. By default this is the "data"
# directory next to this file but can be set to an absolute path
# elsewhere for backing up to a separate partition / mount point.
GHE_DATA_DIR="data"

# The number of backup snapshots to retain. Old snapshots are pruned after each
# successful ghe-backup run. This option should be tuned based on the frequency
# of scheduled backup runs. If backups are scheduled hourly, snapshots will be
# available for the past N hours; if backups are scheduled daily, snapshots will
# be available for the past N days ...
GHE_NUM_SNAPSHOTS=10

# The hostname of the GitHub appliance to restore. If you've set up a separate
# GitHub appliance to act as a standby for recovery, specify its IP or hostname
# here. The host to restore to may also be specified directly when running
# ghe-restore so use of this variable isn't strictly required.
#
#GHE_RESTORE_HOST="github-standby.example.com"

GHE_HOSTNAMEを自分のGHEのホストに変更します。

GHE_HOSTNAME="10.0.0.1"

必要であれば、GHE_DATA_DIRとかも設定しますが、まあデフォルトで問題ないです。

接続確認する

binディレクトリにあるghe-host-checkをまずやりましょう。これは設定と経路確保ができるかどうかを確認してくれます。

./bin/ghe-host-check

成功したら

のように表示されます。バージョン番号も表示してくれるので再度GHEのバージョンを確認しましょう。

バックアップを取る

ghe-backupでバックアップを取れます。こんなかんじです。

./bin/ghe-backup

あとは待つだけ!sshの秘密鍵のパスフレーズを何回も求められます。ACLでinbound接続を許可してないようなネットワークであれば、パスフレーズなしのsshの鍵を作ってもいいかもですね。でも自己責任で。

cronとかに登録する

誰も使ってなさそうなときに走るように登録しましょう!下記は1日1回、2:00AMに走るようにしたcronの例です。

00 2 * * * /path/to/backup-utils/bin/ghe-backup

バックアップからリストアする

何はともあれ、SSHの鍵をリストアしたいGHEのホストに登録しましょう。リストア自体もSSHを通して行われるためです。

次に経路を確認します。例として10.0.0.1をリストアしたいGHEのホストだとします。

.bin/ghe-host-check 10.0.0.1

その後、GHEをマネジメントコンソールからメンテナンスモードにして、

.bin/ghe-restore restore-hostname

これでしばらく待って、完了したらメンテナスモードを解除します。

まとめ

便利!簡単!

参考文献

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9