/ etc /의 변경 사항을 추적하는 방법


30

/ etc /의 변경 사항을 추적하고 싶습니다.

기본적으로 파일이 yum update사용자에 의해 또는 사용자에 의해 변경되었는지 알고 chage가 마음에 들지 않으면 롤백하고 싶습니다. git, LVM 또는 btrfs 스냅 샷 또는 백업 프로그램과 같은 VCS를 사용하려고 생각했습니다.

어떤 것을 권 하시죠?


답변:


32

버전 제어를 사용하여 파일을 관리하는 데비안의 Joey Hess에서 etckeeper 를 원하는 것처럼 들립니다/etc . git, mercurial, darcs 및 bazaar를 지원합니다.

git은 etckeeper가 가장 잘 지원하는 VCS이며 VCS 사용자는 가장 잘 알고 있습니다. 배포판이 etckeeper를 수정하여 기본 VCS가 git이 아닌 것을 선택했을 수 있습니다. 다른 VCS를 좋아한다면 git 이외의 VCS와 함께 etckeeper를 사용해야합니다.


Etckeeper는 내 컴퓨터에 설치 한 가장 귀중한 관리 도구 중 하나이며 새 시스템을 설정 한 후 처음으로 설치하는 패키지 중 하나입니다.
hlovdal

6

나는 당신에게 최종 추천을 줄 수는 없지만 그 주제에 대해 몇 가지 생각을 공유 할 수 있습니다. / etc가 일반적으로 작다는 것을 감안할 때 간단한 압축 tar-ball 솔루션을 사용할 수 있습니다. 히스토리를 거칠 필요가 없다면 설정하기 가장 쉬운 솔루션 일 수 있습니다.

저에게는 / etc를 추적하기 위해 논리 볼륨을 관리하는 것이 지루할 것입니다. 특히 LVM 스냅 샷이 비교적 적은 양의 데이터 백업 수단으로 정기적으로 생성되도록 설계되지 않았다고 생각합니다.

btrfs는 이것에 대해 훨씬 더 잘 갖추어 진 것처럼 보이지만, 예를 들어 ext {2,3,4}만큼 안정적이지 않으며 fsck 도구도 아직 수행되지 않았습니다. 그러나 지속적으로 향상됩니다.

개인적으로 나는 실제로 git을 사용하여 / etc를 추적하지만 git은 소유권이나 권한과 같은 파일 메타 정보를 저장하지 않는다는 것을 명심해야합니다! 또한 .git 디렉토리에 올바른 권한이 있는지 확인하십시오. 그러나 이러한 문제를 해결하는 데 도움이되는 몇 가지 도구가 있습니다. 당신은 한 번 봐 걸릴 수도 있습니다 등 키퍼 와 같은 이상 사용 무언가의 유지의 / 등 트랙 또는 사용을 위해 정확하게 개발, gitperms 또는 메타 스토어 메타 정보를 추적 할 수 있습니다.


3

우리의 경우에 - "원하지 않는"추적하기 위해 우리는 HIDS를 사용하여 변경 samhain다른 있습니다 tripwire또는 aide. 원하지 않는 일이 발생하면 이러한 모든 시스템이 경고합니다.

yum updateconfig-file이 해당 rpm과 같이 플래그가 지정된 경우 A 는 .rpmnew 또는 .rpmold를 떠나지 않고 아무것도 변경해서는 안됩니다.

Myselv 나는 cp -p origfile origfileYYYY-MM-DD전날의 날짜 로 수정하려는 파일의 보안 사본을 만드는 것이 좋습니다 .

다른 모든 것이 실패하면 백업 담당자에게 전화를 걸어 마지막으로 알려진 "좋은"백업에서 복원을 요청합니다.


1

에서 파일 / 디렉토리의 스냅 샷을 만들 수 있다고 생각합니다 /etc.

먼저 / etc / 디렉토리 파일 목록을 만드십시오 :

# ls -lha /etc >> /snapshotofetc

그리고 파일을 만들면 /etc

# touch testfile

/etc우리가 전에했던 것과 같은 스냅 샷을 다시 찍으면

# ls -lhs /etc /lastsnapshotofetc

다음과 같이 두 파일의 차이점을 비교할 수 있습니다.

# diff /snapshotofetc /lastsnapshotofetc

1

항상 radmind가 있습니다. 변경 사항이 마음에 들지 않으면 롤백 할 수 있습니다.


0

구성 관리 또는 파일 시스템 변경 사항 추적 / 모니터링을 찾고 있습니까?

이보다 빠르면 puppet또는을 봅니다 chef. CFEngine상업적인 목적으로 존재합니다. puppet요즘 인기있는 짐승입니다.

후자의 경우 파일 시스템 변경 사항을 모니터링하기가 어렵지만 inotify파일 시스템 감사 auditctl또는 SGI 와 같은 프로그램 인스턴스가 fam있지만 다시 모니터링하는 것은 비용이 많이 들고 구현 비용이 많이들 수 있습니다 (파일 시스템 성능이 저하 될 수 있음).


etckeeper는 / etc 특정 항목에 대해서만 조용 할 수 있습니다.
Nikhil Mulley

정확하지 않아서 죄송합니다. 나는 질문을 개선했다.
taffer

0

rsnapshot원하는 디렉토리에 대한 시간별 스냅 샷을 유지 하는지 확인할 수 있습니다. 24 시간, X 데일리, X 주간 등으로 설정할 수 있습니다. 디스크 공간에 대해 원하는만큼. 파일이 변경되지 않았을 때 하드 링크하기에 충분히 현명합니다 ( rsync배경 뒤에서 사용) .


0

사용을 고려할 수 있습니다 git. 변경 사항을 효율적으로 추적하고 이와 같은 용도로 사용하기가 매우 쉽습니다.

git status # Show changed files
git diff # Show file differences (paged automatically)
git commit -a # Commit all changes. 

초기 설정은 다음과 같습니다. 한동안 해보지 않았습니다.

cd /etc
git init
git add *
git commit -a -m "Created repository"

이 방법은 단일 서버에 가장 효과적이지만 리포지토리를 변경하는 다른 도구와 함께 계층화 할 수 있습니다. 이는 카나리아 사이트에서 예상되는 변경이 발생하도록하는 데 유용 할 수 있습니다.

복제를 사용하여 여러 서버에 공통 인 파일을 처리 할 수 ​​있습니다.


0

매일 실행되고 이전 백업 이후 변경된 파일을 백업하는 스크립트가 있습니다.

#!bin/bash
ext=$(date +"%Y%m%d")_ChangeS
mkdir -p "$1/$ext" && \
  ionice -c3 rsync -ah --numeric-ids --inplace --backup \
                   --backup-dir="$1/$ext" \
                   --include="/etc" / "$1" && \
  rmdir --ignore-fail-on-non-empty "$1/$ext"

백업이 생성되는 경로를 전달하면 디렉토리가 다음과 비슷한 목록을 갖게됩니다 (몇 번 실행 한 후).

20120106_ChangeS  etc
$ls 20120106_ChangeS/etc/
cron.d

변경 사항을 더 자주 기록하도록 변경하거나 inotify를 사용하여 변경 사항이 발생할 때 수정 된 버전의 스크립트를 트리거 할 수 있습니다 /etc.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.