スキップしてメイン コンテンツに移動

投稿

ラベル(backup)が付いた投稿を表示しています

GitLabのバックアップ設定

GitLabのデータのバックアップは、メインデータと設定ファイルの2つをバックアップする必要があります。 メインデータ 公式ドキュメント デフォルトのバックアップ先ディレクトリ: /var/opt/gitlab/backups /etc/gitlab/gitlab.rb内のgitlab_rails['backup_path']で変更可能 下記のようなバックアップファイルが生成される。ファイル名は、{epoch表記時間}_{年}_{月}_{日}_{バージョン}_gitlab_backup.tar -rw-------. 1 git git 33246 Dec 12 13:59 1639317570_2021_12_12_13.7.5_gitlab_backup.tar 設定ファイル 公式ドキュメント バックアップ先ディレクトリ: /etc/gitlab/config_backup 主なバックアップ対象ファイル /etc/gitlab/-secrets.json /etc/gitlab/gitlab.rb バックアップ例 -rw-------. 1 root root 267000 Dec 12 13:59 gitlab_config_1639317570_2021_12_12.tar GitLab1の公式サイトにも記載があるが、メインデータのバックアップと一緒に設定ファイルがバックアップされない理由は、設定ファイルに暗号化キーなどの機密情報が含まれているため。セキュリティ上は、バックアップも別々に保存することが好ましい。 バックアップの設定方法 バックアップ用の処理をbashにまとめてみました。 #!/bin/bash # backup gitlab main data: /var/opt/gitlab/backups gitlab-backup create STRATEGY-copy # backup gitlab config files: / etc/gitlab/config_backup giotla-ctl backup-etc # remove backup files olde

GitのCheckoutとCommitをするBashスクリプト

テキスト系のファイルをバックアップするために、Gitレポジトリを利用することがあるのですが、使いまわせるようにbashで簡単なスクリプトを書いてみました。 単純なバックアップ目的なので、branchは固定でmasterを指定しています。 #!/bin/bash checkout(){ local url=${1} local checkout_dir=${2} if [ ! -d $checkout_dir ] then git clone $url $checkout_dir else cd $checkout_dir git pull fi } commit(){ local commit_target_dir=${1} local message=${2} cd $commit_target_dir diff_count=$(echo `git status -s | wc -l`) if [ $diff_count -ne 0 ]; then git add -A git commit -m $message git push origin master fi } ### 使用例 ### USER=... PASSWORD=... # URL組み立て URL=https://$USER:$PASSWORD@githost/project checkout $URL "backup_directory" ### do something in backup_directory... commit "backup_directory" "Auto commit by bash" ちなみに筆者は、バックアップを下記の手順で取ってgitへ入れています。参考になれば、、、 上記のcheckout関数を用いて、gitレポジトリからプロジェクトをclone(既にclone済みの場合はpull) リモートホストからチェックアウトしたディレクトリへファイルをrsyncで同期 上記のcommit関数を用いて、gitレポジトリへpush