Этот скрипт при запуске считает насколько диск фрагментирован и если значение фрагментации выше порога - дефрагментирует. За всё время пользования ext4 у меня диски не особо фрагментировались в отличии от ntfs, но всё же.
#!/bin/bashTHRESHOLD=30# (1)TARGETS=(# (2)"/mnt/hdd/""ещё какой-нибудь диск")if!command-ve4defrag&>/dev/null;thenecho"❌ Утилита e4defrag не установлена. Установи её: sudo pacman -S e2fsprogs"exit1fiforTARGETin"${TARGETS[@]}";doif[!-d"$TARGET"];thenecho"❌ Путь не существует или не является директорией: $TARGET"continuefiecho"🔍 Проверяю: $TARGET"SCORE_LINE=$(sudoe4defrag-c"$TARGET"|grep"Fragmentation score")SCORE=$(echo"$SCORE_LINE"|grep-o'[0-9]\+')echo"📊 $TARGET → fragmentation score: $SCORE"if["$SCORE"-gt"$THRESHOLD"];thenecho"⚠️ Фрагментация превышает порог $THRESHOLD. Запускаю дефрагментацию..."sudoe4defrag"$TARGET"echo"✅ Дефрагментация завершена для $TARGET"elseecho"✅ Фрагментация в норме. Пропускаем $TARGET"fiecho"-----------------------------"done
Пороговое значение фрагментации. Утилита e4defrag советует вот эти значения: [0-30 no problem: 31-55 a little bit fragmented: 56- needs defrag]
Массив папок
Запускать этот скрипт надо от root прав. Можно использовать с crontab (пакет cronie, гайд):