Supprimer le plus ancien fichier dans une arborescence
Bonjour à tous,
Je sèche un peu sur une problématique, je veux créer un script de rotation de log assez spécial: tout d'abord j'ai une arborescence de ce type :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
Dossier_racine :
-> Dossier1:
-> log1
-> log2
-> ....
-> Dossier2:
-> log1
-> log2
-> ....
-> etc
-> etc
-> etc
-> etc |
Dans ces dossiers, j'ai un nombre variable de logs qui sont stockes, ce que je veux c'est ne garder que les 3 derniers logs (jamais moins et je ne fais rien si j'ai moins de 3 logs dans le dossier).
Problème, l'arborescence est très volumineuse (~env 10000 fichiers) et je ne peux pas savoir la date la plus ancienne (comprenez, je ne peux pas supprimer tout les logs > à 30 jours par exemple).
En bref, avez vous une solution pour, dans un dossier, comparez tous les fichiers présents dans celui-ci et ne gardez que les 3 plus récents?
Voici le morceau de code qui récupère l'arbo actuellement, il manque la comparaison justement....
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
$LogDir = "mon emplacement de log"
$date = Get-Date
$verify_log_dir = Test-Path $LogDir
if ($verify_log_dir)
{
write-host "Succeed"
}
else {
Write-Host "Error: Log directory $LogDir does not exist."
exit
}
$logs_root = Get-ChildItem -Directory -recurse $LogDir
if ($logs_root)
{
foreach ($file in $logs_root)
{
if ($file.Attributes -eq "Directory")
{
$contenu = Get-ChildItem $file.FullName
write-host "dossier parent :" $file.name
if ($contenu.count -gt 3)
{
foreach ($fichier in $contenu)
{
write-host $fichier.Name
//FIXME : LA COMPARAISON
}
}
}
}
} |
Merci d'avance et bonne soirée :)