如何从 Apache Web 服务器中识别和删除未使用的文件/目录

如何从 Apache Web 服务器中识别和删除未使用的文件/目录

新客户。旧服务器。未使用的文件和目录比比皆是。5 个特定的核心目录(附属于不同的域)。10-20 个可能的无关目录,其文件与核心目录处于同一级别。

在每个核心目录中创建一些要运行的内容并执行以下操作:

该脚本将几个月的原始日志文件精简为 URI,收集目录列表,循环遍历目录列表并列出压缩日志文件中没有相应出现的所有内容。

类似的东西已经存在了吗?有更好的方法来实现最终目标吗?建议使用哪种语言/工具来构建?

老实说,如果这件事做得正确的话,我正在寻找从哪里开始。

答案1

Honestly, I'm looking for where to begin on this if it were done right.

拥有良好的备份和新的服务器,只构建您需要的部分。

根据访问情况删除内容的危险在于,您将丢失长尾内容(即塔希提岛的供应商每年访问两次的超级关键文件,没有它,他们就无法将闪亮的小部件运送给您,整个公司就会破产)。这就是备份的作用所在(这样您就可以找回闪亮的小部件文件)。

试图“清理”一个充满垃圾的旧服务器的危险在于不知道什么是垃圾,什么是重要的。
既然你问了我们这个问题,而不是把你的拳头塞进服务器,撕掉它腐烂的数字内脏,我们可以假设你并不确定什么是垃圾,什么不是垃圾。即使是最好的工具也会有两面性:要么你会留下垃圾,因为你不知道是否需要它,要么你会删除你需要的东西,然后不得不去备份。


如果您仍想编写所描述的脚本,则可以使用(相对)简单的 shell 脚本来完成:

  • cat日志文件一起
  • 用于awk抓取 URL
  • sort以及uniq消除重复的 URL 列表
    • 您可能需要进一步awk操作sed才能将 URL 转换为磁盘上的文件名......
  • 获取已知访问过的文件列表,手动检查并添加脚本可能遗漏的任何内容
  • tar已知访问过的文件并将它们保存在安全的地方。
  • 将旧目录移到一边(将其作为备份保存)并解压已知访问的文件。

(具体实现留给读者练习,主要是因为你的访问日志格式可能与我的不同,这会影响awk你将 URL 转换为文件系统上的文件所需使用的表达式)

相关内容