【GitLab】GitLabデータ自動削除、自動バックアップ

3894 ワード

GitLabデータ手動バックアップ


1、GitLabのデフォルトバックアップディレクトリは/var/opt/gitlab/backupsで、/etc/gitlab/gitlabを変更することができる.rbのデフォルトのバックアップファイルディレクトリは、デフォルトのバックアップディレクトリを使用します.

gitlab_rails['backup_path'] = '/var/opt/gitlab/backups'

デフォルトのバックアップディレクトリを変更する場合は、gitlab-ctl reconfigureコマンドを実行して構成を有効にし、gitlab-ctl restartコマンドを実行してサーバを再起動する必要があります.
2、以下のコマンドを使用してデータを手動でバックアップし、コマンドは/var/opt/gitlab/backups *を完了する.tar`のバックアップファイル:

gitlab-rake gitlab:backup:create

欠点:gitlabシステムが正常に動作している場合、手動でコマンドを実行してバックアップする必要があります.gitlabシステムがクラッシュした場合、バックアップはできません.そのため、システムが自動的にバックアップを支援することが最善です.linuxのcrontabタイミングタスクツールを使用して、自動バックアップメカニズムを実現できます.

GitLabデータ自動バックアップ


1./etc/crontabタイミングタスクプロファイルがない場合、crontab -eコマンドを実行してそのプロファイルを生成する.
2、/etc/crontab定時タスクプロファイルを編集し、中に定時タスク指令を以下のように追加する.

0 23 * * * root /var/opt/gitlab/backups/auto_backup.sh -D 1

crontabは毎日23:00に自動的にauto_を実行します.backup.shスクリプト、スクリプトの内容は以下の通りです.

gitlab-rake gitlab:backup:create

知識小贴士:crontabファイルの中で、各行は1つの任務を代表して、各行の各フィールドは1つの設定を代表して、そのフォーマットは全部で6つのフィールドに分けて、前の5段は時間の設定の段で、第6段は実行する命令の段で、各フィールドの間はスペースで分割して、役に立たない段は*で取って代わって、フォーマットは以下の通りです:m h dom mon dow user commandの中で:m:分を表して、0から59の間のいかなる整数です.h:時間を表し、0から23までの任意の整数であってもよい.dom:日付を表します.1から31までの任意の整数です.mon:月を表します.1から12までの任意の整数です.dow:曜日を表します.0から7までの任意の整数で、ここの0または7は日曜日を表します.user:実行するユーザーを表します.command:実行するコマンドは、システムコマンドでも、自分で作成したスクリプトファイル(shellファイルなど)でも構いません.

GitLab履歴バックアップデータ自動削除


上記の操作が完了すると、自動バックアップの機能は完了しましたが、毎日1回バックアップすると、ディスク容量がかかりすぎます.期限切れのファイルを削除する機能を追加する必要があります.まず、バックアップディレクトリの下にある期限切れのファイルを調べて、削除します.コマンドは以下の通りです.具体的なfindコマンドの紹介はここを参照してください.

find "/var/opt/gitlab/backups" -name "*.tar" -ctime +1 -type f -exec rm -rf {} \;

上記のコマンドは、バックアップディレクトリの下の接尾辞名がtarのすべての一般的なファイルを検索し、作成時間を判断し、1日前に作成された場合は削除することを意味します.
Auto_を作成delete.shファイル、上のコマンドをこのファイルに入れます.その後、/etc/crontabファイルにタイミングタスクを構成し、毎日自動削除する前にgitlabがデータをバックアップする機能を実現し、最新のバックアップのみを保持します.

30 22 * * * root /var/opt/gitlab/backups/auto_delete -D 1

GitLabデータ二重バックアップメカニズム


デュアルバックアップメカニズムの原理は簡単です.ここでは、scp /var/opt/gitlab/backups/[ ] root@[ ip]:[ ]コマンドを使用して、当日のバックアップデータを別のサーバにコピーし、別のサーバが上記のように自動削除タスクを構成し、最新のバックアップを保持すればよいという考え方を提供します.
参考資料:
gitlabの自動バックアップ履歴
Centos 7:crontabタイミングでタスクを実行
linux findコマンドフォーマットおよびfindコマンド詳細