내 inode는 어디로 갔나요?

내 inode는 어디로 갔나요?

내 루트 파일 시스템에 inode가 부족합니다. 디스크 공간 문제라면 이를 사용하여 du -s공간이 어디로 가는지에 대한 최상위 개요를 얻은 다음 디렉토리 트리를 따라 특정 위반자를 찾습니다. inode에 해당하는 옵션이 있습니까?

이 질문에 대한 대답사용량이 더 높은 개별 디렉터리가 지적되지만 내 경우에는 이것이 좋지 않습니다. 예를 들어 Linux 소스 디렉터리는 /usr/src/linux-4.0.5 52183.

답변1

버전 8.22부터 GNU coreutils(Linux, Cygwin)를 사용하면 du --inodeslcd047에서 지적한 대로 를 사용할 수 있습니다.

최신 GNU coreutils가 없고 트리에 하드 링크가 없거나 각 링크가 한 번 계산되는지 상관하지 않는 경우 필터링된 출력으로 동일한 숫자를 얻을 수 있습니다 find. 동등한 것을 원하는 경우 du -s, 즉 최상위 디렉토리만 원하는 경우 해야 할 일은 각 최상위 디렉토리 이름의 줄 수를 세는 것뿐입니다. 파일 이름에 줄 바꿈이 없고 현재 디렉터리에 점이 아닌 디렉터리만 원한다고 가정합니다.

find */ | sed 's!/.*!!' | uniq -c

각 디렉터리(하위 디렉터리 포함)의 개수와 함께 모든 디렉터리의 출력을 표시하려면 몇 가지 산술 연산을 수행해야 합니다.

find . -depth | awk '{
    # Count the current depth in the directory tree
    slashes = $0; gsub("[^/]", "", slashes); current_depth = length(slashes);
    # Zero out counts for directories we exited
    for (i = previous_depth; i <= current_depth; i++) counts[i] = 0;
    # Count 1 for us and all our parents
    for (i = 0; i <= current_depth; i++) ++counts[i];
    # We don´t know which are regular files and which are directories.
    # Non-directories will have a count of 1, and directories with a
    # count of 1 are boring, so print only counts above 1.
    if (counts[current_depth] > 1) printf "%d\t%s\n", counts[current_depth], $0;
    # Get ready for the next round
    previous_depth = current_depth;
}'

관련 정보