Objetivo

Identificar ficheiros e pastas que ocupam mais espaço em disco num servidor Windows e proceder à sua limpeza para libertar espaço de armazenamento.

Pré-requisitos

  • Windows Server 2016 ou superior
  • Privilégios de administrador local
  • Acesso ao PowerShell ou linha de comandos
  • Ferramenta TreeSize Free ou similar (opcional)

Procedimento

  1. Verificar o espaço disponível em disco:
    Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="Size(GB)";Expression={[math]::Round($_.Size/1GB,2)}}, @{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}}
  2. Identificar as pastas que mais ocupam espaço:
    Get-ChildItem C: -Directory | ForEach-Object {
        $size = (Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
        [PSCustomObject]@{
            Folder = $_.Name
            SizeGB = [math]::Round($size/1GB,2)
        }
    } | Sort-Object SizeGB -Descending
  3. Limpar ficheiros temporários do sistema:
    Remove-Item -Path "C:WindowsTemp*" -Recurse -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "C:Users*AppDataLocalTemp*" -Recurse -Force -ErrorAction SilentlyContinue
  4. Executar limpeza de disco via linha de comandos:
    cleanmgr /sagerun:1
  5. Verificar e limpar logs do Windows:
    Get-WinEvent -ListLog * | Where-Object {$_.RecordCount -gt 0} | ForEach-Object {
        Write-Host "Log: $($_.LogName) - Records: $($_.RecordCount)"
    }
    wevtutil el | ForEach-Object {wevtutil cl "$_"}
  6. Limpar cache do Windows Update:
    Stop-Service -Name wuauserv -Force
    Remove-Item -Path "C:WindowsSoftwareDistributionDownload*" -Recurse -Force
    Start-Service -Name wuauserv
  7. Verificar ficheiros de paginação e hibernação:
    Get-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetControlSession ManagerMemory Management" -Name PagingFiles
    powercfg -h off
  8. Analisar pastas de utilizadores:
    Get-ChildItem "C:Users" -Directory | ForEach-Object {
        $userSize = (Get-ChildItem $_.FullName -Recurse -ErrorAction SilentlyContinue | Measure-Object -Property Length -Sum).Sum
        [PSCustomObject]@{
            User = $_.Name
            SizeGB = [math]::Round($userSize/1GB,2)
        }
    } | Sort-Object SizeGB -Descending
  9. Limpar registos IIS (se aplicável):
    Remove-Item -Path "C:inetpublogsLogFiles**.log" -Force -ErrorAction SilentlyContinue
  10. Verificar novamente o espaço livre:
    Get-WmiObject -Class Win32_LogicalDisk | Select-Object DeviceID, @{Name="FreeSpace(GB)";Expression={[math]::Round($_.FreeSpace/1GB,2)}}

Resultado Esperado

Após executar os procedimentos, deverá obter:

  • Listagem detalhada do espaço ocupado por cada pasta principal
  • Remoção de ficheiros temporários e cache desnecessários
  • Limpeza dos logs do sistema
  • Aumento significativo do espaço livre em disco
  • Relatório comparativo do espaço antes e depois da limpeza

Notas

  • Cuidado com a remoção: Sempre verifique o conteúdo antes de eliminar ficheiros importantes
  • Backup: Considere fazer backup de dados críticos antes da limpeza
  • Agendamento: Configure tarefas automáticas para limpeza regular usando schtasks
  • Monitorização: Use Performance Monitor para acompanhar o uso do disco a longo prazo
  • Ferramentas alternativas: TreeSize Free ou WinDirStat oferecem interface gráfica para análise visual
  • Logs críticos: Alguns logs do sistema não devem ser eliminados em ambientes de produção

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário