특정 시간에 디렉터리에서 파일이 삭제되지 않았는지 확인하세요.

특정 시간에 디렉터리에서 파일이 삭제되지 않았는지 확인하세요.

rm -rf작업 중이던 큰 디렉토리를 실수로 시작했습니다 . 이 디렉터리에는 특히 data수천 개의 텍스트 파일이 포함된 많은 하위 디렉터리가 포함된 디렉터리가 포함되어 있습니다. 본질적으로 다음과 같습니다.

$ tree data
data
├── collection0
│   ├── input
│   │   ├── file0.txt
│   │   ├── file1.txt
│   │   ├── ...
│   │   └── file9999.txt
│   └── output
│       ├── file0.txt
│       ├── file1.txt
│       ├── ...
│       └── file9999.txt
├── ...
└── collection99
    ├── input
    │   ├── file0.txt
    │   ├── file1.txt
    │   ├── ...
    │   └── file9999.txt
    └── output
        ├── file0.txt
        ├── file1.txt
        ├── ...
        └── file9999.txt

꽤 빨리 프로세스를 중단 할 수 있었지만 rm -rf, 물론 다른 하위 디렉터리의 많은 파일이 실행되는 0.5초 정도 동안 삭제되었습니다.

내 질문은 이 시간 동안 특정 하위 디렉터리에서 파일이 손실되었는지 100% 확신할 수 있는 방법이 있습니까? Modify파일이 사라진 디렉토리의 시간이 파일이 삭제된 시간으로 업데이트된 것 같은데 , 이 방법을 이용해서생각하다데이터 하위 디렉터리의 파일은 삭제되지 않았습니다(2021-09-08이 이벤트 날짜라고 가정 rm -rf).

$ find data -mindepth 2 -maxdepth 2 -type d -exec stat {} -c '%n %y' \;
data/collection0/input 2021-08-28 05:45:49.624228368 -0400
data/collection0/output 2021-08-28 05:45:49.624228368 -0400
...
data/collection99/input 2021-08-29 04:55:38.772912003 -0400
data/collection99/output 2021-08-29 04:55:38.772912003 -0400
$ find data -mindepth 2 -maxdepth 2 -type d -exec stat {} -c '%n %y' \; | grep 2021-09-08
$

이것이 믿을만한 방법인가?

답변1

Linux 매뉴얼 페이지에는 stat(2)다음과 같이 나와 있습니다.

이 필드는 , 및 (0바이트 이상)과 같은 st_mtime파일 수정을 통해 변경됩니다 .mknod(2)truncate(2)utime(2)write(2)또한 st_mtime해당 디렉터리에 파일을 생성하거나 삭제하면 디렉터리가 변경됩니다.st_mtime소유자, 그룹, 하드 링크 수 또는 모드가 변경되어도 이 필드는 변경되지 않습니다.

이 필드는 st_ctimeinode 정보(예: 소유자, 그룹, 링크 수, 모드 등)를 작성하거나 설정하여 변경됩니다.

rm그렇습니다. 모든 디렉터리를 터치하면 업데이트된 수정 시간을 확인할 수 있습니다. 물론, 이후에 수동 재설정이 없다는 가정 하에지만, 이 경우에는변화타임스탬프(ctime)를 업데이트해야 합니다. 글쎄, 맨 페이지 텍스트를 올바르게 이해하면 mtime이 업데이트될 때 ctime도 업데이트되므로 그것만 보는 것만으로도 충분합니다.

또한, 부정을 증명하는 데는 mtime만 사용할 수 있습니다. 타임스탬프가 업데이트되면 파일 삭제, 다른 파일 생성 또는 타임스탬프 수동 수정으로 인해 업데이트가 발생했는지 알 수 있는 방법이 없습니다.

관련 정보