civet icon indicating copy to clipboard operation
civet copied to clipboard

几个疑问: 资源存到civet里,实际位置还是原来的位置? 没有类似billfish那样的目录结构吗?没有拷贝模式和链接模式吗?

Open iamqiz opened this issue 3 years ago • 6 comments
trafficstars

如果结构信息只存在于数据库,那么管理资源就只能使用civet, 而不能使用window资源管理器了, 那就很局限了

iamqiz avatar Oct 30 '22 09:10 iamqiz

结构信息存于数据库里头,对原有的结构不做改变。 因为不同的用户需求可能不一样。有的磁盘空间小,不希望再复制一份;有的可能希望存在NAS上;有的可能存在云盘;也有的可能希望通过快捷方式的链接来保持目录结构。 所以我的一个考虑是把这块设计成插件的形式,按需使用

webbery avatar Oct 30 '22 13:10 webbery

对了,忘了说billfish还有一种模式叫移动模式,就是把资源从原来的地方移动到素材库中, 链接模式不会占用太多磁盘空间(因为是快捷方式的形式) 目录结构实际存在,还能防止数据库损坏导致资源整理前功尽弃 这种模式应该得有,供用户自行选择

还有一个疑问: 现在的模式下,资源如果被外部工具移动了位置,或者改名了, civet还能找到吗?

iamqiz avatar Oct 30 '22 16:10 iamqiz

对了,忘了说billfish还有一种模式叫移动模式,就是把资源从原来的地方移动到素材库中, 链接模式不会占用太多磁盘空间(因为是快捷方式的形式) 目录结构实际存在,还能防止数据库损坏导致资源整理前功尽弃 这种模式应该得有,供用户自行选择

快捷方式这个之前调研过,实现上不难。

但是这种方式有一些问题,就像你下边的提问,如果被外部工具移动了,快捷方式也会出现找不到的情况。在linux下,这种方式还分为软链接和硬链接,软链接跟windows的快捷方式类似,源资源移动了位置,就会找不到;而硬链接会给资源创建一个新的 引用节点,移动和修改都不会产生影响,但是这种方式不能跨磁盘。

mac也是linux内核,所以上面描述的软链接和硬链接的问题应该也是存在的,只是我没有环境验证

还有一个疑问: 现在的模式下,资源如果被外部工具移动了位置,或者改名了, civet还能找到吗?

目前都是根据完整路径来找文件,所以修改了名字或者位置会找不到。

如果只是本地存储的话,你有什么好的想法吗?

webbery avatar Oct 31 '22 15:10 webbery

在window上给文件创建快捷方式之后,原文件改名和(或)移动之后,快捷方式不会失效,这得益于windows[分布式链接跟踪] 技术,也支持跨磁盘移动, 分布式链接跟踪和对象标识符 - Win32 apps | Microsoft Docs https://docs.microsoft.com/zh-cn/windows/win32/fileio/distributed-link-tracking-and-object-identifiers?redirectedfrom=MSDN Shell 链接 - Win32 apps | Microsoft Docs https://docs.microsoft.com/zh-cn/windows/win32/shell/links

window平台的话,我觉得要想追踪文件的变动的话,要么通过快捷方式链接原文件,要么是将资源限制在某个资源库目录下, billfish就是这么干的, 好处多多, linux上软连接确实不能移动文件, 硬链接我没试 ,不能跨磁盘,这个就难受了

iamqiz avatar Oct 31 '22 20:10 iamqiz

Window这个链接追踪的解决方案很好~ linux环境的话,我觉得可以使用硬链接。如果因为跨磁盘导致创建硬链接失败的话,可以创建软链接。如果这个软链接的资源只是被挪动了,还可以使用locate这个命令来查找,关联回来;但是如果改名了,也不好找

webbery avatar Nov 01 '22 15:11 webbery

添加windows shell link: https://github.com/webbery/civetkern/commit/3044643b9c8b3b41a49e1d88458929b0397095f5

webbery avatar Jan 30 '23 16:01 webbery