Поиск не используемых статических файлов на сайте

Столкнулся с проблемой, необходимо найти css, js и файлы изображений, которые давно не используются. В ходе развития проекта, менялись всевозможные компоненты на JS и соответственно от них остался различный мусор в виде CSS и изображений. Поискав в интернете что ни будь подходящее для себя, я так ничего и не нашел и решил написать небольшой скриптик.

#!/bin/bash
if [ $# -ne 3 ] 
then
  echo 'Необходимо передавать 3 параметра'
  echo 'лог_Apache виртуальная_директория директория_с_файлами'
  exit
fi
apache_log=$1
web_dir=$2
local_dir=$3
cur_dir=`pwd`
cat $apache_log | awk '{print $7; }' | grep $web_dir | awk '{gsub("$web_dir", ".", $0); print $0}' | sort | uniq > /tmp/$$rez
cd $local_dir
find ./ -type f | grep -vE .svn | sort | uniq > /tmp/$$rez_find
cd $cur_dir
diff --line-format="%L" /tmp/$$rez /tmp/$$rez_find
rm /tmp/$$rez /tmp/$$rez_find

Суть его заключается в том, что он в начале просматривает файл журнала Apache и создает список файлов, к которым были обращения. Затем создает список существующих файлов, и находит различая в этих списках. Результатом работы скрипта, является список файлов которые не использовались.

Пример запуска:

./fnuf.sh /var/log/apache2/access.log /AR_2_3_3/img /var/www/AR_2_3_3/app/webroot/img/

Данный скрипт нуждается в улучшении, и если он будет пользоваться спросом и у меня будет время, то я его возможно доработаю.

Недостатки:

  • Если файл запрашивался с параметрами GET, то ему не найдется совпадения с реальным файлом.
  • Нет нормальной справки.

Автор: Сергей Степанов

Поделиться @
Анатолий, 16 2015 в 02:01
Идея хорошая, но она не учитывает то, что некоторые файлы еще не запрашивались ни поисковиком, ни живыми посетителями.

Лучше искать все файлы на диске, смотреть на что ссылаются статические файлы и уже по разнице решать используется файл или нет. По БД универсальное решение - добавить дамп в список проверяемых статических файлов (в дампе искать ссылки).

Недостаток и у этого решения найдется. Например, если использовать ссылки не от корня сайта, сопоставить простым скриптом будет трудно.