디렉토리 또는 해당 하위 디렉토리가 마지막으로 수정된 시간을 알려주는 명령은 무엇입니까?

디렉토리 또는 해당 하위 디렉토리가 마지막으로 수정된 시간을 알려주는 명령은 무엇입니까?

우리는 기존 Linux 홈 폴더 서버를 더 이상 사용하지 않으려고 합니다. 하지만 아직도 적극적으로 사용하고 있는 사람들이 몇 명 있습니다. 우리의 계획은 지난 6개월 동안 아무도 사용하지 않은 홈 폴더를 읽기 전용으로 변경하는 것입니다. SMB를 통해 이러한 공유에 액세스하는 Mac 및 Windows 클라이언트가 있습니다.

그래서 내 질문은: 디렉터리 또는 해당 하위 디렉터리가 마지막으로 수정된 시간을 알려주는 명령이 있습니까?

또는

특정 날짜 이후 수정된 상위 디렉토리 목록?

이를 통해 어떤 사용자가 여전히 홈 폴더를 적극적으로 사용하고 있는지 알 수 있습니다.

답변1

직면할 수 있는 문제는 디렉터리의 파일을 수정해도 반드시 디렉터리 타임스탬프가 변경되는 것은 아니라는 점입니다. 예는 다음과 같습니다.

paulgear@localhost:~/tmp$ echo test1 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:29 test1
paulgear@localhost:~/tmp$ date
Wed Jan 15 09:30:07 EST 2014
paulgear@localhost:~/tmp$ echo test2 > test1
paulgear@localhost:~/tmp$ ls -la
total 4
drwxr-xr-x 1 paulgear paulgear   18 Jan 15 09:29 .
drwxr-xr-x 1 paulgear paulgear 3976 Jan 15 09:26 ..
drwxr-xr-x 1 paulgear paulgear    0 Jan 15 09:29 test
-rw-r--r-- 1 paulgear paulgear    6 Jan 15 09:30 test1

test1의 내용을 완전히 교체해도 디렉터리 타임스탬프가 업데이트되지 않은 방법에 유의하세요. 따라서 find 명령은 아마도 다음과 같이 파일과 디렉토리를 찾아야 할 것입니다.

find . -mtime +180 -print0 | xargs -0 chmod a-w

또는 파일과 디렉터리에 대해 시간 기준을 다르게 만들 수도 있습니다.

find . -type d -mtime +120 -print0 | xargs -0 chmod a-w
find . -type f -mtime +180 -print0 | xargs -0 chmod a-w

SMB 파일 공유를 사용하는 많은(대부분?) 애플리케이션의 경우 일반적으로 내용을 동일한 디렉터리의 임시 파일에 쓴 다음 원본 파일을 삭제하고 임시 파일의 이름을 원본 이름으로 바꾸기 때문에 이는 적용되지 않습니다. 그러나 Access와 같은 "데이터베이스" 응용 프로그램은 이를 수행하지 않습니다.

관련 정보