サーバーの設定ファイルを編集するとき、意図した箇所だけを正しく変えられたか確認しないまま作業を終えてしまうと、後になって予期しない動作の原因を追うのに時間がかかることがあります。変更前後のファイルを比較する習慣をつけると、書き換えミスやコピペの誤りをその場で見つけられます。この記事では「変更前に控えを取る → 変更後に差分を確認する」という一連の流れを説明します。
変更前に控えを用意する
最も手軽な方法は cp コマンドで元ファイルをコピーしておくことです。ファイル名に日付を付けておくと、複数回の変更履歴が残るため後で見返しやすくなります。
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.$(date +%Y%m%d)
$(date +%Y%m%d) は実行時の日付(例:20261025)に展開されます。控えのファイルが nginx.conf.20261025 のような名前で作成されます。
変更対象のファイルに書き込み権限が必要な場合は sudo を付けて実行してください。ホームディレクトリなど書き込み権限がある場所であれば sudo は不要です。
設定ファイルを編集する
控えを取ったあと、通常どおりエディタでファイルを編集します。vi・vim・nano など使い慣れたものを使ってかまいません。
sudo vim /etc/nginx/nginx.conf
編集が終わったら保存して閉じてください。この時点では特別な操作は必要ありません。
差分を確認する
編集後に diff コマンドで控えと現在のファイルを比べます。引数の順番は「古いファイル(控え)→ 新しいファイル(編集後)」にするのが一般的です。
diff /etc/nginx/nginx.conf.20261025 /etc/nginx/nginx.conf
差分がなければ何も出力されません。変更があった場合はその箇所だけが表示されます。
前後の文脈も一緒に確認したいときは -u オプションを付けると読みやすい形式で出力されます。
diff -u /etc/nginx/nginx.conf.20261025 /etc/nginx/nginx.conf
差分の出力を読む
-u オプション付きの出力は次のような形式になります(想定例)。
--- /etc/nginx/nginx.conf.20261025 2026-10-24 10:00:00.000000000 +0900
+++ /etc/nginx/nginx.conf 2026-10-25 14:30:00.000000000 +0900
@@ -10,7 +10,7 @@
sendfile on;
tcp_nopush on;
- keepalive_timeout 65;
+ keepalive_timeout 75;
gzip on;
出力の読み方は次のとおりです。
---で始まる行:古いファイル(控え)の情報+++で始まる行:新しいファイル(編集後)の情報-で始まる行:削除された行(控えにあった内容)+で始まる行:追加された行(編集後のファイルにある内容)- 先頭が空白の行:変更されていない前後の文脈行
上の想定例では keepalive_timeout の値が 65 から 75 に変わったことが読み取れます。意図した変更と出力が一致しているかを照らし合わせることで、余分な書き換えが混入していないかチェックできます。
変更が意図どおりかを確認するポイント
差分を確認するときは「変えたつもりのない行が出ていないか」という視点で見ることが重要です。意図した変更だけが + / - として表示されていれば、書き換えは正しく行われています。
次のようなケースには注意が必要です。
- 空白や改行だけの差分が大量に出る:エディタの設定によって末尾スペースや行末コードが変換されている可能性があります。
- 変更したはずの行が差分に出ない:控えと異なるファイルを比べている可能性があります。パスを再確認してください。
- 想定外の行が変わっている:コピペ操作や誤ったカーソル移動で余分な編集が入り込んでいることが一般的によくあります。
空白の差分を除外して内容だけを比べたいときは -b オプション(連続する空白を無視)が使えます。ただし空白が意味を持つ設定ファイルでは誤検出の原因になるため、用途を見極めて使ってください。
よくあるつまずき
控えを取り忘れて編集してしまった
変更後に気づいた場合、パッケージマネージャーでインストールしたソフトウェアであればデフォルト設定ファイルを取り出せることがあります。Debian/Ubuntu 系では次のコマンドで関連ファイルの一覧を確認できます。
dpkg -L nginx | grep conf
重要な設定ファイルをあらかじめ git で管理しておくと、控えのコピーを毎回作る手間が省けます。/etc 以下を自動でバージョン管理する etckeeper というツールもあります。
控えのファイルを間違えて編集してしまった
控えに拡張子や日付を付けていても、誤って開いてしまうことがあります。読み取り専用にしておくとこの問題を防げます。
sudo chmod 444 /etc/nginx/nginx.conf.20261025
比較が終わったら削除するか、専用のバックアップディレクトリにまとめて移動させておくと作業ディレクトリが整理されます。
差分が多すぎて読みにくい
変更箇所が多いときは less にパイプして読み進められます。
diff -u /etc/nginx/nginx.conf.20261025 /etc/nginx/nginx.conf | less
colordiff がインストールされている環境では、削除行・追加行がそれぞれ赤・緑で色付けされて表示されます。差分の量が多い場合でも目で追いやすくなるため、インストールしておくと便利です。インストールされているかどうかは次のコマンドで確認できます。
# Debian/Ubuntu 系
apt list --installed 2>/dev/null | grep colordiff
# RHEL/Rocky 系
rpm -q colordiff
「変更前に控えを取り、変更後に差分を確認する」という手順を毎回のルーティンにしておくことで、設定ミスを本番環境に持ち込むリスクを下げられます。
「コマンドは打てる。次は”現場で通用する型”を最短で身につけたい」——そんなあなたへ。
ネットの断片的なTipsをコピペするだけでは、体系的な運用スキルはなかなか積み上がりません。リナックスマスター.JPの無料メルマガ「リナマガ」では、現場で実際に使うLinuxサーバー運用の考え方を、順を追って実務目線でお届けしています。いま登録された方には、安全なサーバー構築の「型」をまとめた『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼント中です。
>> 図解60P『Linux入門マニュアル』を無料で受け取る
(メルマガ登録は10秒・いつでも解除OK)
※ 「独学の時間がもったいない」「プロから現場の技術を最短で学びたい」という本気の方には、2日で実務レベルが身につく初心者向けハンズオンセミナーもご用意しています。
