2009-10-07 8 views
2

다소 큰 데이터 세트를 저장하기 위해 유닉스 파일 시스템을 공유하는 작은 개발자 팀과 협력합니다. 이 파일 시스템에는 다소 많은 용량이 할당되어 있으므로 한 달에 한 번 정도 여유 공간이 어디인지 파악하고 복구 할 수있는 부분을 찾아야합니다.디스크 공간 사용량이 가장 많은 부분을 감지하기 위해 출력을 비교하는 표준 방법이 있습니까

분명히 우리는 상당한 양의 돈을 사용하지만 분명히 지루한 과정입니다. 우리는 지난 달의 결과물을 유지하고이 달과 비교하여 우리가 가장 많이 성장한 곳을 비교할 수 있다고 생각했습니다. 내 생각 엔이 계획은 그다지 독창적이지 않습니다.

이미 염두에두고이 작업을 수행하는 스크립트가 있는지 묻습니다.

감사합니다.

답변

1

표준 방법이 있는지 정말 모르지만 언젠가는 필요합니다. 그리고이를 처리 할 작은 펄 스크립트를 작성했습니다. 여기 내 코드의 일부입니다 :

#!/usr/bin/perl 

$FileName = "du-previous"; 
$Location = ">"; 
$Sizes; 

# Current +++++++++++++++++++++++++++++ 
$Current = `du "$Location"`; 
open my $CurrentFile, '<', \$Current; 
while (<$CurrentFile>) { 
    chomp; 
    if (/^([0-9]+)[ \t]+(.*)$/) { 
     $Sizes{$2} = $1; 
    } 
} 
close($CurrentFile); 

# Previous ++++++++++++++++++++++++++++ 
open(FILE, $FileName); 
while (<FILE>) { 
    chomp; 
    if (/^([0-9]+)[ \t]+(.*)$/) { 
     my $Size = $Sizes{$2}; 
     $Sizes{$2} = $Size - $1; 
    } 
} 
close(FILE); 

# Show result +++++++++++++++++++++++++ 
SHOW: while (($key, $value) = each(%Sizes)) { 
    if ($value == 0) { 
     next SHOW; 
    } 

    printf("%-10d %s\n", $value, $key); 
} 
close(FILE); 

#Save Current +++++++++++++++++++++++++ 
open my $CurrentFile, '<', \$Current; 
open(FILE, ">$FileName"); 
while (<$CurrentFile>) { 
    chomp; 
    print FILE $_."\n"; 
} 
close($CurrentFile); 
close(FILE); 

코드는 매우 오류 허용되지 않으므로 조정할 수 있습니다.

기본적으로 코드는 현재 디스크 사용 정보를 가져 와서 실행 한 마지막 시간 ('du-previous'에 저장)과 크기를 비교하고 다른 정보를 인쇄하고 현재 사용 정보를 저장합니다.

마음에 드시면 걸릴 수 있습니다.

희망이 도움이됩니다.

+0

매우 엄격한 코드. 좋아 보인다, 나는 그것을 회전 시키게 될 것이다. 덕분에 –

+0

하지만 두 번째 루프가 누락 된 것처럼 보입니다. 나는 거기에 속한 것이 무엇인지 추측 할 수 있다고 생각한다. –

+0

안녕 스티븐. :-D 두 번째 루프는 무엇입니까? – NawaMan

1

정말로 정말로 원하는 것은 끝내주는 kdirstat입니다.

+0

kdirstat는 훌륭하지만 이전 날짜와 비교하지 않습니다 (알고있는 한). 또한이 상자에는 CL 인터페이스 만 있습니다. –

0

여기를 보시길 바랍니다 : InforIT: UNIX Disk Usage > A Closer Look with du,이 질문이 해결 되었기를 바랍니다.

+0

품질이 좋지 않은 답변입니다. 요청한 내용이 누락 되었기 때문입니다. 질문은 인형에 '뒤'를 사용하는 방법이 아니라 크기가 증가한 것을 찾기 위해 몇 가지 '뒤'출력을 비교하는 방법이었습니다. – catpnosis

2

diff-du라고하는 프로그램을 작성했습니다. 나는 아무도 이미 이것을 한 적이 없다고 믿을 수 없다! 어쨌든, 나는 그것이 유용하다는 것을 안다. 나는 너도 그렇게되기를 희망한다.

+0

Andrew, Google을 통해 diff-du를 찾았으며 사용하고 있습니다. 그것은 흔들린다. 고마워. 귀하의 문서도 훌륭합니다! –

+0

아쉽게도 표준 시스템에는 거의 존재하지 않는 하스켈에 있습니다. – catpnosis

0

완성도를 위해 나는 du-diff을 찾았으며 다른 대답에서 언급 된 것을 보지 못했습니다. Andrew의 diff-du (다른 대답에서 언급 됨)는이 점보다 훨씬 앞선 것으로 보입니다.

+0

'du-diff.py '버전에는 버그가 포함되어 있으므로주의해야합니다. – catpnosis