du는 폴더 이름과 완전히 다른 * 및 폴더 크기를 표시합니다.

du는 폴더 이름과 완전히 다른 * 및 폴더 크기를 표시합니다.

일부 데이터를 이동하려고 하는데 먼저 데이터의 크기가 올바른지 확인하고 싶습니다. 그러나 다음을 사용하여 폴더를 확인하면 문제가 발생합니다.

du -sh  myfolder/
780M    myfolder/

하지만

du -sh *
..
71M     myfolder
..

숨김 파일과 관련이 있는 줄 알았는데 이 특정 폴더에는 아무 것도 들어 있지 않습니다.

내가 뭐 놓친 거 없니?

답변1

myfolder사전순으로 정렬하기 전에 하위 디렉토리에 또 다른 하드 링크가 있는 709MB 파일이 포함될 가능성이 높습니다 myfolder. 이 du명령은 각 고유 파일이 처음 표시될 때만 보고하므로 파일에 오버레이가 실행되는 트리 내에 여러 링크가 있는 경우 du처음 탐색된 디렉터리 아래에 한 번만 보고됩니다.

여러 가지 방법으로 하드 링크를 찾을 수 있습니다.

  • find myfolder -links +1 -type fmyfolder+1해당 링크의 위치에 관계없이 ("다중"을 의미) 아래에 최소한 두 번째 하드 링크가 있는 모든 파일을 나열합니다 .
  • find . -samefile myfolder/foomyfolder/foo(GNU find 사용) 현재 디렉토리의 모든 하드 링크를 나열합니다. myfolder현재 디렉터리에 있으므로 자신도 포함 됩니다 myfolder/foo.
  • find -type f -links +1 -printf '%i %p\n' | sort -k1n(GNU find 사용) 현재 디렉토리에 inode 번호별로 그룹화된 하드 링크 파일 목록을 생성합니다. 두 파일이 동일한 파일 시스템에 있고 동일한 inode 번호를 갖는 경우 두 파일은 동일합니다.

관련 정보