J'ai écrit un script PowerShell pour l'archivage d'anciens fichiers journaux ou je dis un fichier de sortie d'une application Web en TB mais le script prend beaucoup de temps. J'ai fait quelques améliorations mais je n'ai pas pu accélérer plus d'ici.PowerShell | Besoin d'amélioration des performances
code:
#region Archive Files using 7zip
[cmdletbinding()]
Param
(
[Parameter(Mandatory=$true, HelpMessage = "Path needs to be with trailing slash at the end of location.")]
[string]$SourceFilesPath
)
$7zip = "C:\Program Files\7-Zip\7z.exe"
$FilePath = ""
foreach ($filename in $(Get-ChildItem $SourceFilesPath -Force -Recurse | where {$_.LastWriteTime -lt (get-date).AddDays(-1).ToShortDateString()}))
{
$FilePath = Get-ItemProperty $filename.FullName
$ZipFilePath = $filename.Directory.ToString() + "\ZippedFiles" + "\Archive_" + $filename.LastWriteTime.ToString("MMddyyyy") + ".7z"
$tempPath = ("-w"+"C:\Temp")
$OutputData = &$7zip a $tempPath -t7z $ZipFilePath $FilePath
$OutputData
if ($OutputData -contains "Everything is OK")
{
Remove-Item $FilePath -Force
Write-Output "File removed $FilePath"
}
Get-Item $ZipFilePath | ForEach-Object {$_.LastWriteTime = $filename.LastWriteTime}
}
#endregion
7zip utilise seulement deux noyaux en mode LZMA par défaut. Passez à l'utilisation de la compression LZMA2 pour activer tous les cœurs de processeur ou spécifiez un mode de compression plus rapide via les commutateurs de ligne de commande. – wOxxOm
Je peux le faire mais je ne pense pas que cela apportera beaucoup d'amélioration car les tailles de fichier ne sont pas grandes. Les fichiers sont pour la plupart en kb et le maximum est de 5 mb mais le nombre de fichiers est énorme. donc peut-être j'ai besoin de quelque chose dans les filtres ou tout autre moyen de filtrage qui peut être plus rapide. – Imran
Grand nombre de fichiers * petite taille = grande taille globale = temps de compression long. – wOxxOm