여러 폴더의 크기 가져오기 - 프로세스의 서버 리소스 소비를 계산하는 방법은 무엇입니까?

여러 폴더의 크기 가져오기 - 프로세스의 서버 리소스 소비를 계산하는 방법은 무엇입니까?

여러 폴더(하위 폴더 및 여러 파일 포함)의 크기를 가져오고 데이터베이스를 업데이트하여 내 서버에 대한 사용자 업로드를 제한해야 합니다. 이 프로세스는 정기적으로, 가능한 한 짧은 시간 내에 완료되어야 합니다.

이 프로세스를 30분마다 실행하도록 crontab을 생성했는데, 이 간격을 10분 이하로 줄일 수 있으면 참 좋겠습니다. 이 프로세스가 서버에서 얼마나 많은 리소스를 사용하는지 모르겠습니다. 저는 1GB RAM, 1 CPU, Debian 8, Apache2 및 MariaDB를 갖춘 소박한 VPS를 가지고 있습니다.

내 질문은: 사용할 시간 간격을 추정하기 위해 이 프로세스의 서버 리소스 소비를 어떻게 계산할 수 있습니까?

그런데, 이것은 폴더(및 하위 폴더)의 크기를 가져오는 데 사용하는 PHP 함수입니다.

function dirSize($dir) {
    $dir = strval($dir);
    if (!is_dir($dir)) return 0;
    $cmd = popen("ls -ltrR {$dir} |awk '{print \$5}'|awk 'BEGIN{sum=0} {sum=sum+\$1} END {print sum}'", 'r');
    $size = intval(fgets($cmd, 80));
    pclose($cmd);
    return $size;
}

감사해요!

편집하다:

좋은 제안을 받았어요@meuh파일이 업로드되거나 삭제될 때마다 데이터베이스를 업데이트하여 개별 파일 크기를 늘리거나 줄입니다. 이것이 리소스 소비 측면에서 더 나은 접근 방식인지 궁금합니다. 감사해요!

답변1

du다음 명령을 시도해 볼 수 있습니다 .

du - 파일 공간 사용량 추정

예:

$ du -d 0 -h Documents/
3.2M    Documents/

du명령에는 많은 옵션이 있으며 모든 디렉터리를 한 번에 전달하고 총 디스크 사용량을 얻을 수도 있습니다( man du자세한 정보 참조).

(실질적인 방법으로) 소요된 시간을 찾으려면 time다음을 앞에 붙일 수 있습니다.

$ time du -d 0 -h Documents/
3.2M    Documents/

real    0m0.004s
user    0m0.002s
sys 0m0.001s

이 시간은 디렉터리의 파일 및 폴더 수에 따라 달라질 수 있습니다.

관련 정보