웹사이트 검색

Linux에서 Etckeeper를 사용하여 버전 제어로 /etc를 관리하는 방법


Unix/Linux 디렉터리 구조에서 /etc 디렉터리는 호스트별 시스템 전체 구성 파일과 디렉터리가 있는 곳입니다. 모든 시스템 전체 구성 파일의 중앙 위치입니다. 구성 파일은 프로그램 작동 방식을 제어하는 데 사용되는 로컬 파일입니다. 이는 정적이어야 하며 실행 가능한 바이너리일 수 없습니다.

시스템 구성 파일의 변경 사항을 추적하기 위해 시스템 관리자는 일반적으로 구성 파일을 수정하기 전에 구성 파일의 복사본(또는 백업)을 만듭니다. 이렇게 하면 원본 파일을 직접 수정하여 실수를 한 경우 저장된 복사본으로 되돌릴 수 있습니다.

Etckeeper는 버전 제어를 사용하여 /etc를 관리할 수 있도록 하는 간단하고 사용하기 쉬운 모듈식 및 구성 가능한 도구 모음입니다. 이를 통해 git(선호되는 VCS), mercurial, bazaar 또는 darcs 저장소와 같은 버전 제어 시스템(VCS)의 /etc 디렉토리에 변경 사항을 저장할 수 있습니다. . 따라서 실수가 발생한 경우 git을 사용하여 /etc에 적용된 변경 사항을 검토하거나 되돌릴 수 있습니다.

다른 기능은 다음과 같습니다.

  1. APT, YUM, DNF, Zypper 및 pacman-g2를 포함한 프런트 엔드 패키지 관리자와의 통합을 지원하여 패키지 업그레이드 중에 /etc에 대한 변경 사항을 자동 커밋합니다.
  2. git이 일반적으로 지원하지 않지만 /etc에 중요한 파일 메타데이터(예: 파일 권한)를 추적합니다.
  3. 여기에는 cron 작업과 systemd 타이머가 모두 포함되어 있으며, 각 타이머는 하루에 한 번씩 자동으로 /etc에 대한 기존 변경 사항을 커밋할 수 있습니다.

Linux에 Etckeeper를 설치하는 방법

EtckeeperDebian, Ubuntu, Fedora 및 기타 Linux 배포판에서 사용할 수 있습니다. 설치하려면 표시된 대로 기본 패키지 관리자를 사용하세요. 이 명령은 git 및 기타 몇 가지 패키지도 종속성으로 설치합니다.

sudo apt-get install etckeeper	#Ubuntu and Debian
apt-get install etckeeper		#Debian as root user
dnf install etckeeper			#Fedora 22+
sudo zypper install etckeeper	        #OpenSUSE 15

RedHat Enterprise Linux(RHEL), CentOS 등의 Enterprise Linux 배포판에서는 다음을 추가해야 합니다. EPEL 저장소를 설치하기 전에 다음과 같이 하세요.

yum install epel-release
yum install etckeeper

Linux에서 Etckeeper 구성

위와 같이 etckeeper를 설치한 후에는 어떻게 작동할지 설정해야 하며 주요 구성 파일은 /etc/etckeeper/etckeeper.conf입니다. 편집을 위해 열려면 그림과 같이 즐겨 사용하는 텍스트 기반 편집기를 사용하십시오.

vim /etc/etckeeper/etckeeper.conf
OR
sudo nano /etc/etckeeper/etckeeper.conf

파일에는 사용할 버전 제어 시스템(VCS)을 설정하고 옵션을 VSC에 전달할 수 있는 여러 구성 옵션(각각 작고 명확한 사용법 설명 포함)이 포함되어 있습니다. 타이머를 활성화 또는 비활성화하고, 특수 파일 경고를 활성화 또는 비활성화하고, etckeeper가 설치 전에 /etc에 대한 기존 변경 사항을 커밋하는 것을 활성화 또는 비활성화합니다.

또한 프런트엔드 또는 상위 수준 패키지 관리자(예: apt, yum, dnf 등)와 기본 또는 하위 수준 패키지 관리자(dpkg, rpm 등)가 etckeeper.

파일을 변경한 경우 해당 파일을 저장하고 파일을 닫습니다.

Git 리포지토리 초기화 및 초기 커밋 수행

이제 etckeeper를 구성했으므로 다음과 같이 Git 저장소를 초기화하여 /etc 디렉토리의 변경 사항 추적을 시작해야 합니다. 루트 권한으로만 etckeeper를 실행할 수 있습니다. 그렇지 않으면 sudo를 사용하세요.

cd 
sudo etckeeper init

다음으로, etckeeper가 자동으로 작동할 수 있도록 하려면 다음과 같이 첫 번째 커밋을 실행하여 /etc의 변경 사항을 추적해야 합니다.

sudo etckeeper commit "first commit"

변경 및 커밋

첫 번째 커밋을 실행한 후 git을 통해 etckeeper는 이제 /etc 디렉터리의 모든 변경 사항을 추적합니다. 이제 구성 파일을 변경해 보십시오.

그런 다음 다음 명령을 실행하여 마지막 커밋 이후 변경된 파일을 표시합니다. 이 명령은 본질적으로 커밋을 위해 준비되지 않은 /etc의 변경 사항을 보여줍니다. 여기서 VCS는 git을 의미하고 “status”는 git 하위 명령입니다.

sudo etckeeper vcs status

그런 다음 최근 변경 사항을 다음과 같이 커밋합니다.

sudo etckeeper commit "changed hosts and phpmyadmin config files"

커밋 로그 보기

모든 커밋의 로그(각 커밋의 ID 및 설명)를 보려면 다음 명령을 실행하면 됩니다.

sudo etckeeper vcs log

커밋의 세부정보를 표시할 수도 있습니다. 다음과 같이 커밋 ID(처음 몇 글자만 사용할 수 있음)만 지정하면 됩니다.

sudo etckeeper vcs show a153b68479d0c440cc42c228cbbb6984095f322d
OR
sudo etckeeper vcs show a153b6847

게다가 표시된 대로 두 커밋의 차이점을 볼 수 있습니다. 이는 다음 섹션에 표시된 대로 변경 사항을 취소하려는 경우 특히 유용합니다. 화살표 키를 사용하여 위아래 또는 왼쪽 및 오른쪽으로 스크롤할 수 있으며 q를 눌러 종료할 수 있습니다.

sudo etckeeper vcs show 704cc56 a153b6847

변경 사항을 취소하는 방법

etckeeper의 핵심은 /etc 디렉토리에 대한 변경 사항을 추적하고 필요한 경우 변경 사항을 되돌릴 수 있도록 돕는 것입니다. 마지막으로 편집할 때 /etc/nginx/nginx.conf에 몇 가지 실수가 있었고 구성 구조의 오류로 인해 Nginx 서비스를 다시 시작할 수 없다는 것을 알고 있다고 가정하면 되돌릴 수 있습니다. 다음과 같이 구성이 정확하다고 생각하는 특정 커밋(예: 704cc56)의 저장된 복사본에 복사합니다.

sudo etckeeper vcs checkout 704cc56 /etc/nginx/nginx.conf

또는 모든 변경 사항을 취소하고 특정 커밋에 저장된 /etc(및 해당 하위 디렉터리) 아래의 모든 파일 버전으로 되돌릴 수 있습니다.

sudo etckeeper vcs checkout 704cc56 

변경 사항이 자동으로 커밋되도록 설정하는 방법

Etckeeper는 패키지에 포함된 Systemd용 서비스 및 타이머 장치도 함께 제공됩니다. /etc 디렉토리의 변경 사항에 대해 "Autocommit"을 실행하려면 지금 당장 etckeeper.timer 유닛을 시작하고 실행 중인지 확인하세요. , 다음과 같습니다.

sudo systemctl start etckeeper.timer
sudo systemctl status etckeeper.timer

그리고 그림과 같이 시스템 부팅 시 자동 시작되도록 활성화합니다.

sudo systemctl enable etckeeper.timer

자세한 내용은 Etckeeper 프로젝트 페이지(https://etckeeper.branchable.com/)를 참조하세요.

결론

이 가이드에서는 버전 제어 시스템(VCS)의 /etc 디렉토리에 있는 저장소 변경을 위해 etckeeper를 설치하고 사용하는 방법을 보여주었습니다. 예를 들어 git을 사용하여 필요한 경우 /etc에 적용된 변경 사항을 검토하거나 되돌릴 수 있습니다. 아래 피드백 양식을 통해 etckeeper에 대한 생각을 공유하거나 질문하세요.