ミドルウェア等のconfigファイルを更新した際、いつ変更したのか、どこを変更したのかを残すために日付つきのファイル名でコピーファイルを作成することがあります。
-rw-r--r-- 1 root root 12017 2月 14 2025 httpd.conf
このようなconf ファイルの差分管理をgitでができるのではないかと思ったので、試してみます。
今回は1人で作業する想定ですので手短に、confファイルのあるサーバー(ローカル)にgitをインストールして更新履歴を残していく形を取ります。
gitのセットアップ
gitをインストール
dnf install git
インストールの確認
git --version
git version 2.47.3
gitのセットアップ
初期設定を行う
ユーザー名とメールアドレスを登録しておきます。
#ユーザー名の登録
git config --global user.name "naki_usagi"
#メールアドレスの登録
git config --global user.email nakiusagi@mailaddress
ワークツリーを作成
履歴管理のためのリポジトリを格納する場所として、ワークツリーを作成します。
mkdir /conf_backup
ディレクトリを初期化する
作成したワークツリーに移動し、初期化を行います。これにより、リポジトリ(.gitファイル)が作成されて差分管理が可能になります。
cd /conf_backup
git init
confファイルのコミット
初回コミット
gitに登録できるのはワークツリー内のファイルが対象となります。今回はapacheの設定ファイルを管理するため、一旦ワークツリーにconfファイルをコピーしてからコミットします。
#ワークツリーへのコピー
cp /etc/httpd/conf/httpd.conf /conf_backup/httpd.conf
#ファイルをインデックスへ登録
git add httpd.conf
#コメントを追加してコミット
git commit -m "new httpconfig"
更新後のファイルをコミット
/etc/httpd/conf/httpd.confの内容を更新した際も、初回と同様にワークツリーへのファイルコピーとコミットを行います。
cp /etc/httpd/conf/httpd.conf /conf_backup/httpd.conf
git add httpd.conf
git commit -m "chenge DocumentRoot"
変更履歴を確認
これまでコミットした内容のログを確認すると、いつコミットしたか、どんなコメントが残っているか等を確認することができます。
また、初期設定時に登録したユーザー情報も表示されていることがわかります。
$ git log
commit 9ba311eea2ccbadb5425a9046d53ebf6a8a66cec (HEAD -> master)
Author: naki_usagi <nakiusagi@mailaddress>
Date: Wed Oct 15 15:48:57 2025 +0900
chenge DocumentRoot
commit aeff62aed81a7b0ee20a1585a0ab2dca96b686f9
Author: naki_usagi <nakiusagi@mailaddress>
Date: Wed Oct 15 15:47:17 2025 +0900
new httpconfig
切り戻し
更新したファイルを切り戻したくなった場合は、checkoutオプションでワークツリーにコピーして上書きすることで、コミット済みのファイルを呼び出すことができます。
#呼び出したいコミット済みファイルのID(左端)を確認
git log --oneline
b163645 (HEAD -> master) chenge DocumentRoot
bbeb25e new httpconfig
#確認したIDを引数に入れてワークツリー内にあるhttpd.confに上書きする
git checkout bbeb25e -- ./httpd.conf
まとめ
configファイルのバックアップにgitを使うメリットとして、初期設定時にユーザー情報を登録するため、ログからも分かるように誰がいつどのような操作をしたのか残すことが可能になります。
デメリットとして、ワークツリー内にコミットファイルを置いておかないといけないため、ディレクトリ構成を工夫するか、コミット前にワークツリー内に更新用ファイルを置いておくなど、一工夫が必要になりそうです。