사용자별 파일 공간 소유권 나열

사용자별 파일 공간 소유권 나열

NetApp 파일러에서 제공하는 4TB NFS 파일 시스템이 있습니다. NetApp의 할당량 도구는 특정 사용자가 이 qtree에서 X만큼의 디스크 공간을 사용하고 있지만 "자신의" 디렉터리에 있지 않으며 파일 시스템의 어느 곳에나 있을 수 있음을 알려줍니다. 그래서 합리적이거나 깔끔하거나 둘 중 하나를 찾아야합니다.

나는 find -user명령을 실행하고 있는데, 지금까지 3일 동안 실행되었으며 그것은 단지 파일 목록일 뿐입니다. 다시 돌아가서 각 파일에 대해 du를 수행하여 파일 크기를 얻을 계획입니다.

이 작업을 더 잘 수행할 수 있는 도구가 있나요? 아니면 내가 원하는 정보를 더 쉽게 얻을 수 있는 방법이 있나요? 단일 사용자가 소유한 파일만 표시하는 기능을 제외하고는 Windows에 SequoiaView와 같은 기능이 있었으면 좋겠습니다.

업데이트: 이것은 내가 실행 중인 명령입니다.

find * -name .snapshot -prune -o -type f -user $USER -exec ls -l {} \; > /tmp/output.txt

목표는 이 원시 데이터를 살펴보고 실제로 어디에 있는지 알아내는 awk 또는 perl 한 줄짜리 코드를 작성하는 것입니다.

답변1

NetApp 관련 접근 방식이 없는 한 할당량은 일반적으로 사용됨, 허용됨 등 몇 가지 숫자로 표시됩니다. 간단한 방법으로 이를 추적합니다. 사용자가 1MB의 파일을 삭제하면 사용량에서 1MB를 뺍니다. 사용자가 파일에 1MB를 추가하면 사용량에 1MB가 추가됩니다. 할당량 자체는 어떤 파일이 해당 공간을 사용하고 있는지 알거나 신경쓰지 않습니다.

그러나 사용 중인 find 명령은 최적이 아닙니다. 먼저 소유자를 찾으려면 파일에서 실행되어야 find합니다 . stat따라서 find이미 차원이 있습니다. 다음으로 exec ls {} \;효율성이 매우 낮습니다. -exec ls {} +통화 수를 줄이려면 최소한 이 기능을 사용해야 합니다 ls. 더 좋은 점은 (찾았다면 표준이 확실하지 않은 경우) 입니다 -printf. 이렇게 하면 ls를 완전히 피하고 stat이미 완료된 조회를 활용할 수 있습니다 .

find … -printf '%s %p\0' # that gives null-delimited, you can use \n instead
                         # for newline-delimited

다른 많은 플래그가 있습니다 -printf. find 맨페이지를 참조하세요.

관련 정보