![특정 시간에 디렉터리에서 파일이 삭제되지 않았는지 확인하세요.](https://linux55.com/image/195384/%ED%8A%B9%EC%A0%95%20%EC%8B%9C%EA%B0%84%EC%97%90%20%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%97%90%EC%84%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%82%AD%EC%A0%9C%EB%90%98%EC%A7%80%20%EC%95%8A%EC%95%98%EB%8A%94%EC%A7%80%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94..png)
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_ctime
inode 정보(예: 소유자, 그룹, 링크 수, 모드 등)를 작성하거나 설정하여 변경됩니다.
rm
그렇습니다. 모든 디렉터리를 터치하면 업데이트된 수정 시간을 확인할 수 있습니다. 물론, 이후에 수동 재설정이 없다는 가정 하에지만, 이 경우에는변화타임스탬프(ctime)를 업데이트해야 합니다. 글쎄, 맨 페이지 텍스트를 올바르게 이해하면 mtime이 업데이트될 때 ctime도 업데이트되므로 그것만 보는 것만으로도 충분합니다.
또한, 부정을 증명하는 데는 mtime만 사용할 수 있습니다. 타임스탬프가 업데이트되면 파일 삭제, 다른 파일 생성 또는 타임스탬프 수동 수정으로 인해 업데이트가 발생했는지 알 수 있는 방법이 없습니다.