다음은 깊은 샘플링을 사용하여 모든 디스크 또는 디렉토리에서 종양을 찾는 작은 앱입니다. 디렉토리 트리를 두 번 측정하여 한 번 측정 한 후 디렉토리 아래에 20 개의 "임의"바이트 경로를 인쇄합니다.
void walk(string sDir, int iPass, int64& n, int64& n1, int64 step){
foreach(string sSubDir in sDir){
walk(sDir + "/" + sSubDir, iPass, n, n1, step);
}
foreach(string sFile in sDir){
string sPath = sDir + "/" + sFile;
int64 len = File.Size(sPath);
if (iPass == 2){
while(n1 <= n+len){
print sPath;
n1 += step;
}
}
n += len;
}
}
void dscan(){
int64 n = 0, n1 = 0, step = 0;
// pass 1, measure
walk(".", 1, n, n1);
print n;
// pass 2, print
step = n/20; n1 = step/2; n = 0;
walk(".", 2, n, n1);
print n;
}
내 Program Files 디렉토리의 출력 결과는 다음과 같습니다.
7,908,634,694
.\ArcSoft\PhotoStudio 2000\Samples\3.jpg
.\Common Files\Java\Update\Base Images\j2re1.4.2-b28\core1.zip
.\Common Files\Wise Installation Wizard\WISDED53B0BB67C4244AE6AD6FD3C28D1EF_7_0_2_7.MSI
.\Insightful\splus62\java\jre\lib\jaws.jar
.\Intel\Compiler\Fortran\9.1\em64t\bin\tselect.exe
.\Intel\Download\IntelFortranProCompiler91\Compiler\Itanium\Data1.cab
.\Intel\MKL\8.0.1\em64t\bin\mkl_lapack32.dll
.\Java\jre1.6.0\bin\client\classes.jsa
.\Microsoft SQL Server\90\Setup Bootstrap\sqlsval.dll
.\Microsoft Visual Studio\DF98\DOC\TAPI.CHM
.\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\sqlce20sql2ksp1.exe
.\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\docs\Partition II Metadata.doc
.\Microsoft Visual Studio .NET 2003\Visual Studio .NET Enterprise Architect 2003 - English\Logs\VSMsiLog0A34.txt
.\Microsoft Visual Studio 8\Microsoft Visual Studio 2005 Professional Edition - ENU\Logs\VSMsiLog1A9E.txt
.\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wce500\mipsiv\NETCFv2.wce5.mipsiv.cab
.\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i\UafxcW.lib
.\Microsoft Visual Studio 8\VC\ce\Dll\mipsii\mfc80ud.pdb
.\Movie Maker\MUI\0409\moviemk.chm
.\TheCompany\TheProduct\docs\TheProduct User's Guide.pdf
.\VNI\CTT6.0\help\StatV1.pdf
7,908,634,694
디렉토리가 7.9GB라고 알려줍니다.
- ~ 15 %는 인텔 포트란 컴파일러로갑니다
- ~ 15 %가 VS .NET 2003으로 이동
- ~ 20 %는 VS 8에갑니다
언로드 할 수 있는지 묻기 만하면됩니다.
또한 파일 시스템에 분산되어 있지만 공간 절약을위한 기회를 나타내는 파일 유형에 대해서도 알려줍니다.
- ~ 15 %는 대략 .cab 및 .MSI 파일로 이동
- ~ 10 %는 대략 텍스트 파일 로깅에갑니다
또한 "SmartDevices"및 "ce"지원 (~ 15 %)과 같이 없이도 할 수있는 다른 많은 것들을 보여줍니다.
선형 시간이 걸리지 만 자주 수행 할 필요는 없습니다.
발견 된 것의 예 :
- 저장된 코드 리포지토리에있는 DLL의 백업 복사본 ( 실제로 저장 하지 않아도 됨)
- 불분명 한 디렉토리에있는 서버의 누군가 하드 드라이브 백업 사본
- 방대한 임시 인터넷 파일
- 고대 문서와 도움말 파일이 오래 전에 필요하다