소프트 링크 파일의 파일 크기를 찾는 방법

소프트 링크 파일의 파일 크기를 찾는 방법

로컬 Redhat 서버의 소프트 링크를 통해 연결된 NFS에 파일 로그가 있습니다.

지난 주말에 터치한 파일을 검색하여 전체 크기를 계산해 보니 결과가 잘못된 것을 발견했습니다.

find . -mtime +3 -a -mtime -5 -ls

이는 지난 주말에 내가 만진 파일의 이름, 경로, 크기, gid, uid 등을 제공합니다. 기이.

문제는 소프트 링크에 ​​있습니다. 링크된 파일이 아닌 링크 크기 자체만 보고합니다. 따라서 링크는 102바이트만 될 수 있지만 실제 파일은 24G입니다. 그리고 총 저장용량이 11TB인데 파일이 23TB라고 알려주기 때문에 어딘가 이중으로 계산되는 것 같습니다.

이 문제를 해결할 방법이 있나요?

감사해요

답변1

-L기호 링크를 따르려면 이 플래그를 사용하십시오 .

심볼릭 링크를 따르십시오. find가 파일에 대한 정보를 확인하거나 인쇄할 때 사용되는 정보는 링크 자체가 아닌 링크가 가리키는 파일의 속성에서 가져와야 합니다(깨진 기호 링크이거나 find가 가리키는 파일을 확인할 수 없는 경우 제외). ) 링크 포인트에서 ). 이 옵션을 사용하는 것은 -noleaf를 의미합니다. 나중에 -P 옵션을 사용하면 -noleaf가 계속 작동합니다. -L이 적용되고 find가 검색 중에 하위 디렉토리에 대한 기호 링크를 찾으면 기호 링크가 가리키는 하위 디렉토리가 검색됩니다.

-L 옵션이 적용되면 -type 술어는 링크 자체가 아닌 기호 링크가 가리키는 파일 유형과 항상 일치합니다(기호 링크가 끊어지지 않는 한). -L을 사용하면 -lname 및 -ilname 조건자가 항상 false를 반환합니다.

답변2

readlink -f그러면 심볼릭 링크에 대한 대상이 제공되며, 그런 다음 stat출력을 사용하여 reddlink디스크의 실제 파일에 대한 데이터를 얻을 수 있습니다. 또한 대상에 대한 추적 심볼릭 링크를 사용한 find -L다음 추가로 | sort | uniq조건자 사양 내에서 연결된 파일을 이중 계산하는 것을 방지할 수 있습니다 find.

관련 정보