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