linux下不同分区之间移动文件,提示invalid cross-device link错误
请描述您的问题
服务器为 debian11系统,移动硬盘分区1为ext4格式,挂载为/DOCUMENT;移动硬盘分区2为ext4格式,挂载为/MEDIA,当前用户为root用户,将/DOCUMENT下某个目录移动到/MEDIA下某个目录时,会报如下错误:
{ "code": 500, "message": "服务内部错误: rename /DOCUMENT/movies/宇宙探索编辑部 (2023) /MEDIA/movies/宇宙探索编辑部 (2023): invalid cross-device link", "data": null }
感谢反馈。 进入主机-终端,手动执行 mv 或者 cp 命令来操作文件夹,是否会有相同的报错问题。
@wanghe-fit2cloud 主机终端里面执行没问题的,如下图

根据1panel接口报错信息,我猜测1panel移动文件的原理是:先在目标位置建立一个原文件的硬链接,然后再删除原文件?Invalid cross-device link 明显是创建硬链接的报错,因为是不同分区,所以建立硬链接失败了,导致报错。我奇怪的是1panel底层为啥不直接调用mv命令来移动文件,这个不是兼容性最好吗?
@wanghe-fit2cloud 主机终端里面执行没问题的,如下图
根据1panel接口报错信息,我猜测1panel移动文件的原理是:先在目标位置建立一个原文件的硬链接,然后再删除原文件?Invalid cross-device link 明显是创建硬链接的报错,因为是不同分区,所以建立硬链接失败了,导致报错。我奇怪的是1panel底层为啥不直接调用mv命令来移动文件,这个不是兼容性最好吗?
目前 1Panel 的文件操作部分是通过调用 Golang 的 sdk 来实现,这个问题我们在后续版本中持续优化吧。
v1.8.0 版本已发布。