Právě jsem vydal alfa verzi svého nového programu, který se pokouší tuto funkcionalitu poskytnout. V současné době splňuje některé, ale ne všechny vaše požadavky. I tak vás to může zajímat. Poskytuje nástroj příkazového řádku pro značkování a virtuální souborový systém pro procházení (kde jsou značky reprezentovány adresáři).
http://www.tmsu.org/
jakýkoli soubor, který může uživatel číst, může být volně označen
Ano.
uživatel může vyhledávat soubory odpovídající jedné nebo několika značkám
Ano. Buď pomocí nástroje příkazového řádku, nebo procházením adresářů značek ve virtuálním souborovém systému.
soubory lze přesouvat bez ztráty dříve přidružených tagů
Ne. Aplikace však ukládá otisky označených souborů, které se používají k identifikaci přesouvaných souborů. K dispozici je příkaz 'repair', který aktualizuje cesty přesunutých souborů. (Tento mechanismus se samozřejmě zhroutí, pokud se soubor přesune i změní.)
systém lze snadno zálohovat
Ano. Je to jednoduchý databázový soubor Sqlite 3.
žádné závislosti na jakémkoli desktopovém prostředí
Ano. Žádné závislosti a protože může být spuštěn jako virtuální souborový systém, je k dispozici pro prohlížení jako souborový systém v jakémkoli programu, který podporuje symbolické odkazy.
pokud je zapojena nějaká gui, musí existovat cli fallback
Momentálně žádné GUI.
Není jasné, jaký druh vyhledávání chcete. Pokud chcete, aby to fungovalo kdekoli v unixu, spíše než ve vašem domovském adresáři, a chcete pouze vyhledávat na základě názvů cest, je funkční následující schéma s trochou hackování shellu a pomocí standardního locatedb
:
- Každý adresář, který obsahuje alespoň jeden tagovaný soubor, potřebuje standardní podadresář, řekněme
.path-tags
; - Každý soubor v adresáři $FILE s odkazem $TAG (který by neměl obsahovat znak
_
) má odkaz$TAG_$FILE -> ../$FILE
Nechám podrobnosti o locate-tag
skript pro vás; měla by to být dvou- nebo třílinková vložka s použitím pouze locate
příkaz a shell hackery. (Pokud máte zájem, mohu jeden napsat).
Někteří z KDE mluvili o tomto druhu schématu pro metadata, i když si nepamatuji podrobnosti.
Také by mělo být možné provádět sofistikovanější testy prověřující obsah založené na tomto schématu s podobným skriptem obaleným kolem find
.
Úvahy o aktualizovaných požadavcích
- jakýkoli soubor, který může uživatel číst, lze volně označit - Ano, neměl by být problém
- uživatel může vyhledávat soubory odpovídající jedné nebo několika značkám - Stejně tak
- soubory lze přesouvat bez ztráty dříve přidružených značek - Adresáře, které obývají, lze volně přesouvat, ale pokud se soubor přesune z adresáře, máme potíže. Pokud by značky měly tvar
$TAG_$INODE_$FILE
a máme efektivní způsob, jak zjistit, které cesty mají daný inode, pak to můžeme udělat a značky ztratíme pouze tehdy, když se přesuneme ze souborových systémů. Kopírování souborů může způsobit určité potíže, a to je zjevně složitější než můj původní návrh. - systém lze snadno zálohovat - není v podstatě obtížné.
- žádná závislost na žádném desktopovém prostředí - žádný
- pokud je zapojeno nějaké gui, musí existovat záložní cli - tam žijeme!
Postscript Soubor "reverse-inode-lookup" popsaný odkazem (2), který jste mi ukázali ve své odpovědi na (1), lze použít k poskytnutí nějaké další infrastruktury. Můžeme spustit službu na souboru zpětného vyhledávání, který kontroluje, zda každý inode uvedený v názvu souboru značky odpovídá inodu souboru (pokud existuje), na který značka ukazuje. Pokud neexistuje žádná shoda, lze provést požadovanou operaci (existuje ještě inode? Kde je?) a soubor zpětného vyhledávání buď zmutovat, nebo regenerovat, a aktualizovat symbolické odkazy značky.
Očekávám jeden ošemetný případ:co když tagovaný soubor není tam, kde tagy říkají, že by měl být, soubor zpětného vyhledávání říká, že stále existuje, ale marnotratný soubor není tam, kde vyhledávací soubor říká, že je, vyhledávací soubor je mimo? datum? Existuje několik způsobů, jak tento případ vyřešit, žádný zjevně ideální. Kromě toho se celý tento úkol zdá být tím, na co se Perl dobře hodí...
Nikdo se nezmínil, ale rozhodně byste se měli podívat na rozšířené atributy systému souborů. Má je například ext4. existují nástroje getfattr a setfattr, které se s nimi vypořádají. Samozřejmě budete muset napsat nějaké shellové skripty pro vyhledávání souborů označených sometag. Pokud jde o zmíněné otázky, všechny odpovědi jsou „Ano“. Měli byste vzít v úvahu pouze to, že to závisí na systému souborů.