![소프트 링크 파일의 파일 크기를 찾는 방법](https://linux55.com/image/78190/%EC%86%8C%ED%94%84%ED%8A%B8%20%EB%A7%81%ED%81%AC%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%20%ED%81%AC%EA%B8%B0%EB%A5%BC%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
로컬 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
.