Ни для кого не секрет, что в нашем любимом онтопике имеет место быть (естественно не в таких огромных количествах, как в альтернативных ОС) накапливание мусора - конфиги там в /etc, если пакетный менеджер не удаляет, пустые директории в /var, ну и тому подобный хлам. Так как findcruft умер, а других тулз не нагуглил, решил повелосипедить. Нужна помощь с добавлением исключений.
#!/bin/bash
mkdir '/tmp/garbage/'
echo "finding packages..."
EIX_LIMIT=0 eix -#I > /tmp/garbage/packages
echo "finding files in packages..."
cat /tmp/garbage/packages | while read line; do equery f $line | grep "^/" >> /tmp/garbage/package_files; echo "searching $line"; done
cat /tmp/garbage/package_files | grep -v "/usr/src" | sort > /tmp/garbage/package_files_sort
echo "finding files in system..."
find /bin/ -type f >> /tmp/garbage/system_files
find /boot/ -type f >> /tmp/garbage/system_files
find /etc/ -type f >> /tmp/garbage/system_files
find /lib32/ -type f >> /tmp/garbage/system_files
find /lib64/ -type f >> /tmp/garbage/system_files
find /opt/ -type f >> /tmp/garbage/system_files
find /sbin/ -type f >> /tmp/garbage/system_files
find /usr/ -type f >> /tmp/garbage/system_files
find /var/ -type f >> /tmp/garbage/system_files
echo "Sorting files..."
cat /tmp/garbage/system_files | grep -v "/usr/portage" | grep -v "/usr/src" | grep -v "/var/db/pkg" | grep -v "/lib/modules" | sort > /tmp/garbage/system_files_sort
echo "Writing log file and finishing..."
diff /tmp/garbage/system_files_sort /tmp/garbage/package_files_sort > /var/log/garbage.log
rm -rf '/tmp/garbage'
Замечания по скрипту:
- Еще не дописал удаление дубликатов, если имеются
- делая не отображаются директории, соответственно нужно дописать поиск пустых директорий
equery f $line | grep "^/"
- не все исключения добавлены
- нужно разобраться, как быть с x86 архитектурой например
- игнорятся файлы в /usr/src
- дописать парсер diff`а, чтобы по человечески и красиво.
UPD Новая версия
UPD2 Обновленная версия. Устранена практически мешанина /lib и /lib64 на x86_64
UPD3 v 0.0.1