우분투 실전 명령어 | etckeeper로 /etc 변경 이력 관리

서비스 장애를 추적하다 보면 패키지 업데이트나 수동 편집 때문에 /etc 설정이 언제 바뀌었는지 놓치는 경우가 많습니다. etckeeper는 /etc 전체를 Git으로 기록해서 "누가, 언제, 무엇을" 바꿨는지 바로 확인하게 해줍니다.

언제 쓰는가

  • 운영 서버에서 설정 파일 변경 이력을 남겨야 할 때
  • apt 업그레이드 이후 설정이 꼬였는지 비교해야 할 때
  • 팀 단위로 서버 설정 변경 책임 추적이 필요할 때

바로 쓰는 명령어

sudo apt update
sudo apt install -y etckeeper git
sudo etckeeper init
sudo etckeeper commit "initial /etc snapshot"
cd /etc
sudo git log --oneline -n 10
sudo git show --name-only --stat HEAD

핵심 옵션/패턴

  • etckeeper는 apt/dpkg 훅과 연동되어 패키지 작업 전후 변경점을 자동 커밋할 수 있습니다.
  • 수동 편집 직후에는 sudo etckeeper commit "메시지"로 의미 있는 커밋 메시지를 남기는 습관이 좋습니다.
  • 특정 파일만 빠르게 비교할 때는 /etc에서 sudo git diff HEAD~1 -- ssh/sshd_config처럼 경로를 붙이면 됩니다.
cd /etc
sudo editor ssh/sshd_config
sudo etckeeper commit "harden ssh: disable password auth"
cd /etc
sudo git diff HEAD~1 -- ssh/sshd_config
sudo git blame ssh/sshd_config

명령 출력 예시

$ sudo git log --oneline -n 3
4f2c1a8 harden ssh: disable password auth
9a17d3e apt: auto-commit before upgrade
c3a0b91 initial /etc snapshot
$ sudo git show --name-only --stat HEAD
commit 4f2c1a8...
Author: root <root@server>
Date:   Thu Feb 19 01:42:10 2026 +0900

    harden ssh: disable password auth

 ssh/sshd_config | 2 ++
 1 file changed, 2 insertions(+)

자주 하는 실수

  • /etc에서 바로 git add .를 남발하면 민감 파일 권한 변경까지 한 번에 섞여서 리뷰가 어려워집니다. 변경 직후 필요한 파일만 확인하고 커밋하세요.
  • 커밋 메시지를 "update"처럼 뭉뚱그리면 나중에 원인 추적 시간이 급격히 늘어납니다. 변경 이유를 짧게라도 포함하는 게 좋습니다.
  • 저장소 백업 없이 서버만 믿고 운영하면 디스크 장애 때 이력도 함께 사라집니다. 주기적으로 원격 저장소 또는 백업 경로로 미러링하세요.

검증 방법

  • 최근 변경 파일 목록이 의도와 맞는지 확인
  • 패키지 설치/업그레이드 후 자동 커밋이 생성되는지 확인
  • 복구 리허설로 이전 설정 되돌리기가 실제로 되는지 확인
cd /etc
sudo git status --short
sudo git log --oneline -n 5
cd /etc
sudo git checkout HEAD~1 -- ssh/sshd_config
sudo sshd -t

운영 팁

  • 운영팀 규칙으로 /etc 변경은 반드시 etckeeper 커밋까지 완료하도록 체크리스트에 넣으면 품질이 안정됩니다.
  • SSH, Nginx, systemd 같은 핵심 파일은 변경 전후에 sshd -t, nginx -t, systemctl daemon-reload 검증 명령을 바로 붙여두면 사고를 줄일 수 있습니다.
  • 장애 회고 때 etckeeper 로그를 타임라인 기준으로 보면 설정 변경과 장애 발생 시점을 빠르게 연결할 수 있습니다.

출처

  • etckeeper 공식 문서
  • Ubuntu Server Guide