ls 명령어를 이용하여 디렉토리 콘텐츠를 리스팅하는 경우, 디렉토리의 크기가 항상 4096 bytes (4 KB) 임을 확인할 수 있다. 아래를 보자.
/var$ ls -al
total 56
drwxr-xr-x 14 root root 4096 Oct 27 05:19 .
drwxr-xr-x 25 root root 4096 Apr 4 06:37 ..
drwxr-xr-x 2 root root 4096 Apr 4 07:36 backups
drwxr-xr-x 13 root root 4096 Nov 9 07:00 cache
drwxrwxrwt 2 root root 4096 Nov 18 06:25 crash
drwxr-xr-x 47 root root 4096 Jan 19 09:10 lib
drwxrwsr-x 2 root staff 4096 Apr 24 2018 local
lrwxrwxrwx 1 root root 9 Oct 3 2018 lock -> /run/lock
drwxrwxr-x 14 root syslog 4096 Apr 4 06:25 log
drwxrwsr-x 2 root mail 4096 Oct 3 2018 mail
drwxr-xr-x 2 root root 4096 Oct 3 2018 opt
lrwxrwxrwx 1 root root 4 Oct 3 2018 run -> /run
drwxr-xr-x 4 root root 4096 Oct 22 09:29 snap
drwxr-xr-x 4 root root 4096 Oct 3 2018 spool
drwxrwxrwt 4 root root 4096 Apr 4 08:39 tmp
drwxr-xr-x 3 root root 4096 Oct 27 05:19 www
이는 실제 그 디렉토리가 차지하는 크기가 아니라 해당 디렉토리의 메타 정보를 담는데 사용되는 공간의 크기이다.
실제 디렉토리의 크기를 확인할 수 있는 명령은 "disk usage"의 약자인 du 이다. 그럼 du 명령을 어떻게 활용하는지 살펴보자.
du 명령은 특정 파일이나 디렉토리에 의해 사용되고 있는 파일 공간의 크기를 보여준다. 그 특정 경로가 디렉토리라면, du는 해당 디렉토리에 포함된 각각의 파일과 서브디렉토리의 디스크 사용량을 요약해서 보여준다. 경로가 정의되어 있지 않는 경우에는 현재 작업 디렉토리의 디스크 사용량을 리포팅해준다.
예를 들어 /var 디렉토리의 전체 사이즈를 알고 싶다면, 다음과 같은 명령으로 가능하다.
$ sudo du -sh /var
1.7G /var
명령어와 그 인수에 대해 하나씩 살펴보자. /var 디렉토리의 대부분의 파일과 디렉토리는 root 사용자의 소유이므로 sudo 로 시작한다. 일반 사용자로는 확인할 수 없다. sudo 를 제외하고 실행하면, 다음과 같은 에러메시지가 출력된다.
$ du -sh /var
du: cannot read directory '/var/lib/nginx/uwsgi': Permission denied
du: cannot read directory '/var/lib/nginx/proxy': Permission denied
du: cannot read directory '/var/lib/nginx/fastcgi': Permission denied
s - 특정 디렉토리의 전체 크기를 보여준다. s 를 빼면 서브디렉토리를 하나씩 리스팅해서 보여주게 된다.
h - 읽기 좋은 포맷으로 출력해준다. 만약 h 를 빼고 실행하면 다음과 같이 표시된다.
$ sudo du -s /var
1767932 /var
1 단계 서브디렉토리의 디스크 사용량을 표시하고 싶다면, 2가지 방법이 있다. 하나는 * 심볼을 이용하는 것이다. 아래의 c 스위치는 각 크기의 총합을 표시하게 해준다.
$ sudo du -shc /var/*
2.5M /var/backups
78M /var/cache
4.0K /var/crash
1.1G /var/lib
4.0K /var/local
0 /var/lock
204M /var/log
4.0K /var/mail
4.0K /var/opt
0 /var/run
44K /var/snap
28K /var/spool
32K /var/tmp
347M /var/www
1.7G total
다른 방법으로는 서브디렉토리의 레벨을 특정하는 --max-depth 스위치를 사용할 수도 있다.
$ sudo du -h --max-depth=1 /var
1.1G /var/lib
4.0K /var/opt
204M /var/log
28K /var/spool
4.0K /var/crash
32K /var/tmp
347M /var/www
4.0K /var/local
78M /var/cache
44K /var/snap
2.5M /var/backups
4.0K /var/mail
1.7G /var
du 명령어는 다른 명령어와 결합해서 사용할 수 있다. 예를 들면 크기가 큰 디렉토리 5개를 다음과 같이 나열할 수 있다.
$ sudo du -h /var/ | sort -rh | head -5
1.7G /var/
1.1G /var/lib
639M /var/lib/snapd
443M /var/lib/snapd/snaps
347M /var/www/html
'프로그래밍 Programming' 카테고리의 다른 글
ML을 활용한 스팸 SMS 적발시스템 Flask 로구 현하기 MLDevelop a NLP Model in Python & Deploy It with Flask (1) | 2019.04.23 |
---|---|
터미널세션 녹화 및 공유기 asciinema (0) | 2019.04.20 |
ImportError: cannot import name '_validate_lengths' from 'numpy.lib.arraypad' (0) | 2019.03.16 |
아나콘다 패키지 삭제 conda remove (0) | 2019.03.15 |
서프라이즈 라이브러리를 활용한 추천시스템 구축 및 검증 Building and Testing Recommender Systems With Surprise, Step-By-Step (0) | 2019.03.02 |