我有一個包含標籤的散列值數據庫,我想爲它實現一個FUSE接口。由於值通過哈希值進行索引,因此它們必須是隻讀的。在FUSE上覆制/移動語義
此數據庫的原生界面非常簡單:
- 您可以
download
,upload
或tag
文件。 - 您可以獲得所有定義的集合
tags
。 - 對於按照布爾標籤組合標記的文件,您可以使用
search
。
FUSE接口語義很簡單:
- 數據庫被視爲一個大的合成目錄層次結構中的值是通過其散列命名的文件和標籤的目錄。
cd
對於給定標記(路徑上的命名約定可用於實現布爾操作),目錄內的語義等價於search
。read
-ing一個文件是語義上等同於一個值(FUSE允許無國籍read
open
所以和close
可以是空操作)download
(的一部分)。- 將不存在的文件複製/移動到給定路徑中相當於
upload
和tag
它。將現有文件複製/移動到給定路徑相當於添加新的tag
s。 - 其他任何操作都會引發錯誤。
這FUSE接口是非常有好處的,讓您輕鬆嵌入一個層次一個內部的標記文件系統,而無需像TagSpaces或Evernote需要的外部工具。
我的問題出現在使用FUSE接口的任何其他禁止操作中識別文件copy
或move
:操作與等效語義有無盡的可能組合。
用FUSE接口識別文件copy
或move
最可靠的方法是什麼?