Formas de extrair informações de arquivos para dados grandes

1

Eu estou tentando recursivamente extrair algumas informações de arquivo no meu servidor de arquivos. Eu era capaz de executar os comandos abaixo no meu próprio laptop. Quando eu os executo no meu servidor de arquivos, que está passando por 4 TB de dados, eles correm ou ficam presos por horas.

Quando eu uso o programa chamada TreeSize para ver o tamanho dos diretórios, ele passa por todos os 4 TB de dados e exibe o uso em menos de 10 minutos.

Minha pergunta é que existe uma maneira de extrair as informações do arquivo em 4 TB de dados usando cmd ou powershell e tão rápido quanto o programa TreeSize?

forfiles /s /d -2/21/2017 /c  "cmd /c echo @fdate, @ftime, @path" >  ./myfile.csv

dir /q /s /o:d > ./myfile2.txt
    
por hello 23.03.2017 / 05:32

1 resposta

2

Você está executando um novo cmd para cada arquivo que é extremamente caro. Isso não é novidade :

There are some disadvantages to using CMD.exe with FORFILES, a new process will be created and destroyed for every file that FORFILES processes, so if you loop through 1000 files, then 1000 copies of CMD.exe will be opened and closed, this will affect performance.

Em contraste, utilitários de tamanho como o TreeSize foram otimizados para velocidade :

TreeSize Free works on the MFT (Master File Table) and reaches extremely high scan speeds. Scanning operations run in a thread, so you will see results almost instantly while TreeSize Free is working in the background.

Você pode fazer melhor não chamando mais executáveis. O PowerShell é ótimo nisso, mesmo no meu nível de novato:

Get-ChildItem D:\path\ -recurse |
Where-Object {$_.CreationTime -and $_.CreationTime -lt "2/21/2017" } | 
Select-Object FullName, LastWriteTime |
Export-Csv myfile.csv

O formato de saída desejado e o outro arquivo são um exercício para o leitor.

    
por 23.03.2017 / 06:35