这可能是一个简单的问题,但我只是想再仔细检查一下。
如果我删除了django db中与用户上传的媒体文件相关联的所有对象,那么我可以手动删除媒体目录中的所有内容吗?我注意到当对象被删除时它不会删除附加的图像,所以自从我的项目工作了好几个月后,就会出现大量的图像(大部分都是重复的)。有没有正确的方法来做到这一点?或者我刚才描述的是什么?
另外,对于这类任务,切换到Amazon S3会更好吗?
答案 0 :(得分:1)
如果使用django-extensions,则会有一个管理命令,显示未链接到任何对象的所有文件。你可以尝试:
python manage.py unreferenced_files
如果要删除这些文件,可以使用此命令
python manage.py unreferenced_files | xargs -I{} rm -v {}
您还可以创建一个cron作业来定期删除这些文件
如果有一个文件夹用于上传文件而且它们没有链接到模型而您不想删除它们(就像使用django-filebrowser那样),那么您可以管道grep
在管道xargs
答案 1 :(得分:0)
是的,您可以手动删除数据库中删除的记录的媒体文件。
由于交易问题,媒体文件不会自动删除。例如,您删除了模型和图像,然后回滚了事务 - 删除的记录将被"恢复"到数据库但图像将丢失。