특정 파일이 수정/편집되었을 때 모든 인스턴스를 나열하는 방법이 있습니까?

특정 파일이 수정/편집되었을 때 모든 인스턴스를 나열하는 방법이 있습니까?

현재 파일이 있습니다 abc.txt. 이 파일이 편집된 대로(생성된 시점부터) 모든 인스턴스를 볼 수 있는지 알고 싶습니다.

묻다:abc.txt터미널에서 특정 파일의 내용을 편집할 때 백로그된 날짜와 시간을 어떻게 볼 수 있나요 ?

우분투 14.04.1 LTS를 사용하고 있습니다

답변1

이것은아니요함께 있을 수도 있음네이티브 파일파일 시스템에서. 당신이 찾고 있는 것은버전 관리 시스템, git(또는 svn등)과 같이 사용자가 파일을 체크아웃하고 체크인하면 활동 및 변경 사항에 대한 모든 정보가 해당 버전 관리 시스템의 데이터베이스에 저장됩니다.

답변2

대부분의 파일 시스템은 이를 수행할 수 있는 방법을 제공하지 않습니다. 그러나 Unix/Linux 시스템에서 파일 변경 사항을 추적하는 방법에는 여러 가지가 있습니다.

  • 다음과 같은 로그 구조 파일 시스템너프, 모든 변경 사항을 스냅샷으로 추적합니다. 이러한 스냅샷은 가능한 한 오랫동안 보관됩니다(상태에 따라 다름).nilfs_cleanerd설정 및 파일 시스템의 변경량), 특정 파일에 사용 가능한 스냅샷은 다음을 사용하여 확인할 수 있습니다.lscp. 이는 파일의 (아마도 부분적인) 기록을 제공합니다. 스냅샷은 보관된 체크포인트로 변환될 수 있습니다.
  • 연속 백업 시스템은 추적하는 파일의 스냅샷을 주기적으로 찍습니다. 이러한 시스템은 대부분 상업용입니다.위키피디아틀림없이.드롭 박스그리고충돌 계획나는 어느 정도 지속적인 백업을 구현하는 두 시스템을 알고 있습니다. 그들은 모든 변경 사항을 추적하지는 않지만 주어진 파일의 모든 기록을 유지합니다.
  • ~처럼재니스위에서 언급한 것처럼 버전 제어 시스템을 사용하면 사용자가 파일 기록을 저장할 수 있지만 저장되는 변경 사항은 일반적으로 자발적입니다. 따라서 파일 기록은 변경 사항이 저장된 지점만 반영하며 파일에 대한 실제 편집 활동은 반영하지 않습니다. ). 일부 VCS 래퍼는 어느 정도 자동화를 제공할 수 있습니다.etckeeper염두에 두어야 할 점은 패키지 관리 도구를 사용할 때마다 자동으로 변경 사항을 추적한다는 것입니다.

답변3

사실 이후에는 불가능합니다. "일반" 파일 시스템은 이전 버전의 파일에 대한 로그를 보관하지 않습니다. 알 수 있는 것은 파일의 마지막 수정 시간뿐입니다(파일이 수정된 시간이며 ls -l대부분의 파일 관리자에 표시됩니다). 편집자가 우연히 백업 파일을 남기지 않는 한, 이전 버전을 찾거나 언제 제작되었는지 알 방법이 없습니다.

파일 소유자는 수정 시간을 변경할 수 있으므로 보안 문제가 있거나 작성자를 신뢰하지 않는 경우에는 아무 소용이 없습니다. 파일에는 수동으로 설정할 수 없는 또 다른 타임스탬프인 ctime(inode 변경 시간)이 있으며 파일이 수정되거나 이동되거나 해당 메타데이터(수정 시간 포함)가 수정될 때마다 업데이트됩니다. 따라서 파일의 ctime은 파일의 현재 버전이 늦어도 해당 시점에 생성되었음을 보여줍니다(시스템 관리자를 신뢰한다고 가정). 를 사용하여 ctime을 볼 수 있습니다 ls -lc.

파일 주변의 활동을 기록하려면 다음을 사용할 수 있습니다.파일에 접근할 때 로깅하는 것과 동일: 하나이노티파이 시계,로깅 파일 시스템,중재 규칙등. 이러한 모든 방법은 설정 후에 발생하는 상황만 기록합니다.

특정 날짜의 파일 상태를 추적하려면 백업을 만드세요.

파일의 모든 연속 버전을 자동으로 저장하려면CopyFS 파일 시스템.

편리한 방법으로 파일의 연속 버전을 추적하려면 다음을 사용하십시오.버전 관리 시스템. 이는 협력 메커니즘입니다. 변경한 사람이 새 버전을 커밋하기로 결정하면 해당 버전이 기록됩니다.

관련 정보