繁体   English   中英

django应用程序多个硬盘驱动器[Errno 18]跨设备链接无效

[英]django app multiple hard drives [Errno 18] Invalid cross-device link

我在Debian服务器上有一个Django应用,并且当前磁盘上的当前site_media目录已满。 所以我想在第二张磁盘上上传文件。 服务器上的路径是/ disk:

        obj = form.save(commit=False)
        obj.user_id = self.request.user.pk
        obj.save()
        initial_path = obj.file.path
        print(initial_path)
        new = settings.MEDIA_ROOT_NEW + obj.file.name
        print(new)
        os.rename(initial_path,new)
        shutil.move(initial_path, new)

在我的settings.py中,我有:

        MEDIA_ROOT = os.path.join(PROJECT_PATH, 'site_media/')
        MEDIA_ROOT_NEW = '/disk/site_media/'

仍然出现错误:django [Errno 18]跨设备链接无效

有任何想法吗?

os.rename() 不同的文件系统上可能会失败。

如果src和dst在不同的文件系统上,则该操作在某些Unix风格上可能会失败。

shutil.move() 应该可以工作

如果目标位于当前文件系统上,则使用os.rename()。 否则,将src复制(使用shutil.copy2())到dst,然后将其删除。

但在os.rename(initial_path,new)之前有一个shutil.move(initial_path, new) 删除第一个os.rename() ,它应该可以工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM