Привіт привіт.
Не зважаючи на свій SSD-накопичувач в декілька терабайт рано чи пізно приходить момент коли є потреба провести аудит вашого диску на великі файли. Я вже це робив раніше.
Тоді великі за розміром файли (перших 20-ть) я шукав так:
# By files
Get-ChildItem C:\ -recurse -Exclude "VM,Toolkit,swsetup,tmp" | Sort-Object length, lastwritetime -descending | select-object -first 20 | `
ft length, lastwritetime, fullname -wrap -auto
А папки які займають багато місця так:
# By folders
$directorySizes = Get-ChildItem -Path 'C:\' -Directory -Recurse -Exclude "VM,Toolkit,swsetup,tmp" |
ForEach-Object {
$directory = $_.FullName
$size = (Get-ChildItem -Path $directory -File -Recurse | Measure-Object -Property Length -Sum).Sum
[PsCustomObject]@{
DirectoryPath = $directory
SizeInBytes = $size
}
} |
Sort-Object -Property SizeInBytes -Descending |
Select-Object -First 15 |
Format-Table DirectoryPath, SizeInBytes -AutoSize
А сьогодні маю іншу проблему - багато розробників генераторів GenAI або процесів до них не дуже переймаються назвою SD-моделей, точніше назвою файлу моделі. Іноді це просто як pytorch_model.safetensors
Safetensors - це формат файлів, розроблений Hugging Face, який використовується для безпечного та швидкого завантаження та зберігання ваг моделей машинного навчання, особливо для нейромереж типу Stable Diffusion. Він забезпечує безпечну передачу даних, запобігаючи можливості виконання шкідливого коду, який може бути вбудований в інші формати, такі як .ckpt.
Так от маючи Forge, Fooocus, ComfyUI поруч, та переводячи всі моделі в одну загальну папку я помітив що є чималі файли (а моделі зараз мають розмір від 6 Гб до 20 Гб) які співпадають за розміром, але не співпадають за назвою. Або навіть різниця тільки в extension: safetensors, ckpt, bin, pth, pt.
Тому я вирішив вдосконалити попередній скрипт на пошук таких дублікатів:
$directorySizes
$file_dublicates = Get-ChildItem –path D:\Models -Recurse |
Group-Object -property Length| Where-Object { $_.count -gt 1 }|
Select-Object –Expand Group| Get-FileHash |
Group-Object -property hash | Where-Object { $_.count -gt 1 }| ForEach-Object { $_.group | Select-Object Path, Hash }
$file_dublicates
$file_dublicates | Out-GridView -Title 'Выберите файлы для удаления' -OutputMode Multiple | Remove-Item –Verbose –WhatIf
З його допомогою в теці D:\Models виконується пошук файлів які тотожні за хешем, тобто є близнюками, і які потім можно вибрати для видалення за вашим вибором.
Прошу.

1 comment:
Увага - хеш великого файлу обчислюється довгенько, майте терпіння.
Post a Comment
А что вы думаете по этому поводу?