我接手了一家小公司的技术运营。然而,前任主管做出了一个错误的决定,存储了数百 GB 的图片,尽管我们的网站只使用了其中的 5GB 左右。基本上,没有清理脚本。我现在的任务是优化这个烂摊子,但不太确定从哪里开始。有没有办法获取每个图片文件上次通过网络访问的列表,这样我就可以执行类似“如果在过去 365 天内未打开,则移动到备份驱动器并从主服务器中删除”之类的操作?
答案1
您忘记告诉您所使用的环境(操作系统、Web 服务器等),因此我认为是 Linux。
如果您没有使用 在服务器上安装数据目录noatime
,您可以使用find
搜索 365 天内未访问的文件:
find /var/www/images -iname "*.jpg" -atime +365 -type f
如果您使用了noatime
,这将是不可能的(并且如果您使用了relatime
,则atime
可能会关闭 24 小时)。
然而,这不是一个好方法,因为您的 HTML 文件中可能会出现死链接,而有人会在 5 天后需要此资源……
更好的方法:解析您的 Web 树,列出其中引用的所有文件(确保关闭 Web 服务器的自动索引功能...)并存档其他所有内容。这样,您就可以确保 HTML 文件中列出的所有内容仍然可用。
请注意,您可能会发现常规树中没有链接到的孤立 HMTL 文件,人们可以通过直接链接访问这些文件 - 在构建列表时请考虑这些文件。当然,图像文件可能也是如此,但您实际上只能使用日志文件解析或方法捕获这些文件find
。
答案2
根据您的网络日志的回溯时间,您可以解析出相关目录中文件的所有条目,然后删除所有未找到的内容。