Segue um script funcional e eficiente para backup local usando o power shell e 7z
# Caminho do executável 7-Zip $SevenZip = "C:\Program Files\7-Zip\7z.exe" # Diretórios de origem (adicione quantos quiser) $SourceDirs = @( "C:\sistema", "D:\DFS\storage" ) # Diretório de destino do backup $BackupDir = "D:\Backup_Local" # Número de backups a manter $KeepBackups = 4 # Nome do arquivo de backup com data $Date = Get-Date -Format "yyyy-MM-dd" $BackupFile = Join-Path $BackupDir "Backup_$Date.7z" # ------------------------------------------------- # Verifica e encerra qualquer processo 7z.exe ativo # ------------------------------------------------- $SevenZipProcesses = Get-Process -Name "7z" -ErrorAction SilentlyContinue if ($SevenZipProcesses) { Write-Host "Finalizando processos 7z.exe em execução..." $SevenZipProcesses | ForEach-Object { Stop-Process -Id $_.Id -Force } } # Cria o diretório de destino se não existir if (!(Test-Path $BackupDir)) { New-Item -ItemType Directory -Path $BackupDir | Out-Null } # Cria o backup (agora passando os diretórios como array) & "$SevenZip" a -t7z -mx9 "$BackupFile" @SourceDirs # Limpeza: mantém apenas os últimos $KeepBackups arquivos $Backups = Get-ChildItem -Path $BackupDir -Filter "Backup_*.7z" | Sort-Object LastWriteTime -Descending if ($Backups.Count -gt $KeepBackups) { $OldBackups = $Backups | Select-Object -Skip $KeepBackups foreach ($Old in $OldBackups) { Remove-Item $Old.FullName -Force } }
Sobre o Autor