단말기 이력 스마트 백업 방법

단말기 이력 스마트 백업 방법

내 zsh 터미널 기록(~/.zsh_history)의 스마트 백업을 구현하려고 합니다. Bash의 경우에도 마찬가지이며 차이가 없으며 파일 이름은 .bash_history입니다.

지금까지 내 기록에 비밀 등이 포함될 수 있으므로 개인 Git 저장소를 만들기로 결정했습니다. 나는 월별 디렉터리를 생성하고 기본적으로 ~/.zsh_history의 내용을 매일 월별 디렉터리에 파일 이름으로 일일 타임스탬프를 사용하여 복사하는 ansible 스크립트(bash 스크립트를 사용하여 수행할 수 있음)를 만들었습니다. 나는 이 스크립트를 일일 크론 작업에 넣었습니다.

문제는 중복이 너무 많다는 것. 처음에는 백업이 성공한 후 기록 파일의 내용을 삭제할 수 있다고 생각했지만 이것이 재귀 검색이 필요하지 않다는 것을 깨달았습니다. 이제는 전날과 비교하여 기록의 변화만 백업하는 기능을 만들어볼까 생각중입니다. 오늘의 히스토리가 (1, 2, 3) 명령어이고 내일의 히스토리가 (1, 2, 3, 4, 5)라면, 다음날 백업은 전체가 아닌 (4, 5)만 가져옵니다. 두 그룹의 교차점과 같습니다(어제의 기록 파일은 하나이고 오늘의 기록 파일은 다른 것입니다(어제를 포함하는 그룹보다 더 큰 그룹!).

이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 유사한 프로젝트의 다른 예를 찾지 못했으므로 도움을 주시면 감사하겠습니다.

다음은 참조용 기록 파일의 몇 줄입니다.

: 1659932134:0;git commit -m "First initial best commit"
: 1659932139:0;git push
: 1659932147:0;git push -u origin main
: 1659932151:0;git push
: 1660008827:0;cat ~/.zshrc
: 1660008832:0;cat ~/.zsh_history

예를 들어, 다음날 파일은 다음과 같습니다.

: 1659932134:0;git commit -m "First initial best commit"
: 1659932139:0;git push
: 1659932147:0;git push -u origin main
: 1659932151:0;git push
: 1660008827:0;cat ~/.zshrc
: 1660008832:0;cat ~/.zsh_history
+++++++++ ( this is just me adding to show the difference)
: 1659932113:0;git add .gitignore
: 1659932117:0;git add backups/
: 1659932119:0;git add hist_backup.yml

답변1

~에 대한

그렇다면 이 문제를 해결하는 가장 좋은 방법은 무엇일까요?

~부터실행된 모든 명령 기록(프로덕션 서버에서 관리자가 실행)매우 일반적인 요청이며 auditd올바른 도구일 수 있습니다.

~에 대한

비슷한 프로젝트의 다른 예를 찾지 못했습니다.

아마도 타임스탬프 때문에 검색이 가능하도록 요청하신 것 같습니다.데이터베이스보다git. 그럼 어쩌면 이런 일이 일어날 수도 있겠네요데이터베이스에 bash 기록 기록.

~에 대한

스마트 백업을 수행하는 방법은 무엇입니까?

를 통해 증분 백업을 볼 수도 있습니다 rsync.

관련 정보