![큰 디렉토리를 크기별로 분할하는 방법은 무엇입니까?](https://linux55.com/image/192697/%ED%81%B0%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%ED%81%AC%EA%B8%B0%EB%B3%84%EB%A1%9C%20%EB%B6%84%ED%95%A0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
크기가 약 2.5TB인 디렉터리가 있습니다. 이 디렉터리 아래에는 파일이 없는 하위 디렉터리가 3000개 이상 있습니다. 각 하위 디렉터리의 크기는 매우 다양하며 일부는 1MB 미만이고 일부는 15GB를 초과하지만 20GB를 초과하는 것은 없습니다. 이 기본 디렉터리를 각각 20GB 미만의 여러 작은 디렉터리로 분할하고 싶습니다. 이 솔루션확실히중간 최대 저장 공간이 필요합니다. 즉, 20GB를 초과하지 않는 한 모든 파일을 알파벳순으로 정렬하고 디렉터리를 추가할 수 있습니다.
나는 대답을 시도했다이것해결책, 파일이 포함된 디렉터리에서는 잘 작동하지만 하위 디렉터리에서는 작동하지 않습니다.
#!/bin/bash
directory=${1:-testdir}
sizelimit=${2:-1000} # in MB
sizesofar=0
dircount=1
du -s --block-size=1M "$directory"/* | while read -r size file
do
if ((sizesofar + size > sizelimit))
then
(( dircount++ ))
sizesofar=0
fi
(( sizesofar += size ))
mkdir -p -- "$directory/sub_$dircount"
mv -- "$file" "$directory/sub_$dircount"
done