लिनक्स में फ़ाइल-टैगिंग के लिए एक अच्छा समाधान क्या है? [बन्द है]


71

मैं अपनी फ़ाइलों को टैग करने और उन टैगों के आधार पर उन्हें खोजने / फ़िल्टर करने का एक तरीका खोज रहा हूं।

यहाँ मेरी ( अद्यतन ) आवश्यकताएँ हैं:

  • उपयोगकर्ता द्वारा पठनीय किसी भी फाइल को स्वतंत्र रूप से टैग किया जा सकता है
  • उपयोगकर्ता एक या कई टैग से मेल खाने वाली फ़ाइलों की खोज कर सकता है
  • पहले से संबद्ध टैग को खोए बिना फ़ाइलों को चारों ओर ले जाया जा सकता है
  • सिस्टम को आसानी से बैकअप किया जा सकता है
  • किसी भी डेस्कटॉप वातावरण पर निर्भरता नहीं
  • यदि कोई भी गुई शामिल है, तो एक क्ली कमबैक होना चाहिए

मैं इसे संभालने के लिए कुछ बुनियादी फाइलसिस्टम और कोरुटिल्स हैकरी की उम्मीद कर रहा हूं, लेकिन मैंने इस मुश्किल के बारे में अभी तक सोचा नहीं है।
इस बीच मैं बीगल और मेटाट्रैकर की समीक्षा करता हूं, जिसका उल्लेख यहां किया गया है, और देखें कि वे कैसे प्रदर्शन करते हैं।


ठीक है, इसलिए बीगल में बहुत बड़ी निर्भरताएँ हैं, और ट्रैकर ओकिश है, लेकिन फिर भी कुछ निर्भरताएँ मुझे पसंद नहीं हैं ...

कुछ और शोध कर रहे हैं, और जाने का रास्ता बहुत अच्छी तरह से बढ़ाया जा सकता है फ़ाइल विशेषताएँ
यह हाल के फाइल सिस्टम के लिए एक देशी समाधान है, लेकिन वे अभी तक बहुत अच्छी तरह से समर्थित नहीं हैं (अधिकांश कोर्यूटिल्स उन्हें डिफ़ॉल्ट रूप से नष्ट कर देते हैं, उदाहरण के लिए सीपीए -ए ध्वज को संरक्षित करने की आवश्यकता है)। जब मैं कुछ हैक्स में अपना हाथ आज़माता हूं, तो उनका उपयोग करने पर कुछ विचार सुनना पसंद करेंगे, आखिरकार यह एक नया सवाल पैदा कर सकता है।


2
विस्तारित फ़ाइल विशेषताओं के साथ समस्याएँ: (i) मेरे अनुभव में, जब आप बैकअप लेना चाहते हैं तो वे एक उपद्रव हैं। (ii) जब आप फाइलसिस्टम के बीच चलते हैं तो आप उनका उपयोग नहीं कर सकते। इसके अलावा, वे राइट थिंग होंगे।
चार्ल्स स्टीवर्ट


पीसी-बीएसडी फ़ोरम में, इस प्रश्न के 2010 संस्करण के संदर्भ में: पीसी-बीएसडी, विस्तारित विशेषताएँ और टैगिंग; OpenMeta और Apple का दृष्टिकोण
ग्राहम पेरिन

जवाबों:


13

यह स्पष्ट नहीं है कि आप किस प्रकार की खोज करना चाहते हैं। यदि आप चाहते हैं कि यह यूनिक्स में कहीं भी काम करे, बल्कि यह कि आपका होम डायरेक्टरी, और आप केवल pathname- आधारित खोजों को करना चाहते हैं, तो निम्न स्कीम व्यावहारिक है, थोड़ा शेल हैकरी के साथ, और मानक का उपयोग कर locatedb:

  1. प्रत्येक निर्देशिका कि कम से कम एक टैग किए गए फ़ाइल है, एक मानक उपनिर्देशिका की जरूरत है कहते हैं .path-tags;
  2. निर्देशिका में प्रत्येक फ़ाइल $ FAG लिंक $ TAG (जिसमें चार नहीं होना चाहिए _) के साथ एक लिंक है$TAG_$FILE -> ../$FILE

मैं locate-tagस्क्रिप्ट का विवरण आपके पास छोड़ देता हूं; यह केवल locateकमांड और शेल हैकरी का उपयोग करके दो या तीन-लाइनर होना चाहिए । (यदि आप रुचि रखते हैं, तो मैं एक लिख सकता हूं)।

कुछ केडीई चेप्स ने मेटाडेटा के लिए इस तरह की योजना के बारे में बात की, हालांकि मुझे विवरण याद नहीं है।

इस योजना के आधार पर और अधिक परिष्कृत, सामग्री-परीक्षण करने के लिए भी संभव होना चाहिए, जो एक समान लिपि में लिपटा हो find

अद्यतन आवश्यकताओं पर विचार

  1. उपयोगकर्ता द्वारा पढ़ी जाने वाली किसी भी फ़ाइल को स्वतंत्र रूप से टैग किया जा सकता है - हां, कोई समस्या नहीं होनी चाहिए
  2. उपयोगकर्ता एक या कई टैग से मेल खाने वाली फ़ाइलों की खोज कर सकता है - इसी तरह
  3. पहले से जुड़े टैग को खोए बिना फाइलों को इधर-उधर खिसकाया जा सकता है - वे जिस निर्देशिका में रहते हैं उसे स्वतंत्र रूप से स्थानांतरित किया जा सकता है, लेकिन यदि फ़ाइल को निर्देशिका से स्थानांतरित किया जाता है, तो हम परेशानी में हैं। यदि टैग ने रूप ले लिया है $TAG_$INODE_$FILEऔर हमारे पास एक कुशल तरीका है जिससे यह पता लगाया जा सके कि किन रास्तों में एक इनोड है , तो हम यह कर सकते हैं, केवल फाइल सिस्टम से बाहर जाने पर टैग खो देते हैं। फ़ाइलों को कॉपी करना कुछ परेशानी पैदा कर सकता है, और यह मेरे मूल सुझाव से अधिक जटिल है।
  4. सिस्टम को आसानी से बैकअप दिया जा सकता है - अनिवार्य रूप से मुश्किल नहीं है।
  5. किसी भी डेस्कटॉप वातावरण पर कोई निर्भरता नहीं - कोई नहीं
  6. यदि कोई भी गुई शामिल है, तो एक क्ली कमबैक होना चाहिए - यही वह जगह है जहाँ हम रहते हैं!

पोस्टस्क्रिप्ट लिंक (2) द्वारा वर्णित "रिवर्स-इनोड-लुकअप" फ़ाइल (1) में आपने मुझे अपने उत्तर में दिखाया (1) का उपयोग कुछ अतिरिक्त बुनियादी ढांचे को देने के लिए किया जा सकता है। हम रिवर्स लुकअप फ़ाइल पर एक सेवा चला सकते हैं, जो यह जांचता है कि टैग के फ़ाइल नाम में दिया गया प्रत्येक इनोड फ़ाइल के इनोड से मेल खाता है (यदि कोई हो) टैग इंगित करता है। यदि कोई मेल नहीं है, तो आवश्यक सर्जरी की जा सकती है (क्या इनोड अभी भी मौजूद है? यह कहां है?), और रिवर्स लुकअप फ़ाइल को या तो म्यूट या पुनर्जीवित किया जा रहा है, और टैग सिमिलिंक को अपडेट किया जा रहा है।

मैं एक मुश्किल मामले की आशंका करता हूं: क्या होगा यदि टैग की गई फ़ाइल वह नहीं है जहां टैग यह कहते हैं कि, रिवर्स लुकअप फाइल कहती है कि यह अभी भी मौजूद है, लेकिन कौतुक फ़ाइल वह नहीं है जहां लुकअप फाइल कहती है कि, लुकअप फाइल बाहर है दिनांक? इस मामले को संभालने के कुछ तरीके हैं, कोई भी स्पष्ट रूप से आदर्श नहीं है। इसके अलावा, इस पूरे कार्य के लिए पर्ल की तरह अच्छी तरह से अनुकूल है लगता है ...


1
यह अच्छा है, और मैं सिम्बलिंक का उपयोग करने के बारे में भी सोच रहा हूं। समस्या यह है कि एक फ़ाइल को उसके टैग को खोए बिना इधर-उधर नहीं किया जा सकता है। आदर्श रूप से, टैग पथ अज्ञेय होगा, और एक टैग के लिए खोज एक वास्तविक सिमिलिंक के बजाय वास्तविक फ़ाइल को वापस करना चाहिए ... PS: मैं एक शेल आधारित समाधान के लिए हूं, लेकिन मुझे लगता है कि समस्या डोमेन इसे बनाते हैं ताकि यह केवल शैल लिपियों के माध्यम से बनाए रखने के लिए बहुत दर्दनाक होना चाहिए, मुझे आशा है कि कोई मुझे गलत साबित करेगा
जुलिएन

मैंने अपना प्रश्न संपादित किया है (उम्मीद है) यह स्पष्ट करें कि मैं किस तरह के समाधान के बाद हूं। चीयर्स
जुलिएन

लानत है कि मैं कभी नहीं पता था कि इनोड्स जहां फ़ाइलों के लिए लगातार छापे पसंद करते हैं, यह विचार के लिए भोजन है!
जुलिएन

1
इनोड्स यूड्स हैं, लेकिन वे दिए गए एफएस से बंधे हैं, इसलिए वे गाइड नहीं हैं। यह एक बुरी बात नहीं है, क्योंकि कॉपी करने, बैकअप, संग्रह करने और सी का मतलब है कि फाइलें डुप्लिकेट हो जाती हैं और अन्य फाइलों के भीतर संग्रहीत होती हैं, और आप चाहते हैं कि fs राज्य आपको परिणामों की जानकारी देने के लिए पर्याप्त जानकारी दे।
चार्ल्स स्टीवर्ट

1
मैं पंचलाइन से चूक गया, कौन सा सॉफ्टवेयर इसे समायोजित कर सकता है? मैं ऐसी किसी चीज़ की उम्मीद कर रहा था जिसे मैं अपने खुद के बुनियादी ढांचे को लिखे बिना लापरवाही से उपयोग कर सकता हूं। (लेकिन इतना सादा कि जब मैं
चाहूँ

22

मैंने अभी-अभी अपने नए प्रोग्राम का एक अल्फा जारी किया है जो इस कार्यक्षमता को प्रदान करने का प्रयास करता है। यह वर्तमान में आपकी आवश्यकताओं में से कुछ को पूरा करता है, लेकिन सभी को नहीं। यह वैसे भी आप के लिए ब्याज की हो सकती है। यह टैगिंग के लिए एक कमांड-लाइन टूल और ब्राउजिंग के लिए एक वर्चुअल फाइल-सिस्टम प्रदान करता है (जहां टैग निर्देशिकाओं द्वारा दर्शाए जाते हैं)।

http://www.tmsu.org/

उपयोगकर्ता द्वारा पठनीय किसी भी फाइल को स्वतंत्र रूप से टैग किया जा सकता है

हाँ।

उपयोगकर्ता एक या कई टैग से मेल खाने वाली फ़ाइलों की खोज कर सकता है

हाँ। या तो कमांड-लाइन टूल के माध्यम से या वर्चुअल फ़ाइल-सिस्टम में टैग निर्देशिकाओं को ब्राउज़ करके।

पहले से संबद्ध टैग को खोए बिना फ़ाइलों को चारों ओर ले जाया जा सकता है

हालाँकि, एप्लिकेशन उन फ़ाइलों के फ़िंगरप्रिंट्स को टैग करता है, जिनका उपयोग स्थानांतरित फ़ाइलों की पहचान करने में मदद के लिए किया जाता है। एक 'मरम्मत' कमांड प्रदान की जाती है जो स्थानांतरित फ़ाइलों के पथ को अपडेट करेगी। (स्पष्ट रूप से यह तंत्र टूट जाता है यदि कोई फ़ाइल स्थानांतरित और संशोधित दोनों हो।)

सिस्टम को आसानी से बैकअप किया जा सकता है

हाँ। यह एक सरल Sqlite 3 डेटाबेस फ़ाइल है।

किसी भी डेस्कटॉप वातावरण पर निर्भरता नहीं

हाँ। कोई निर्भरता नहीं है और जैसा कि इसे एक वर्चुअल फ़ाइल-सिस्टम के रूप में चलाया जा सकता है यह किसी भी प्रोग्राम में फ़ाइल-सिस्टम के रूप में उपयोग करने के लिए उपलब्ध है जो प्रतीकात्मक लिंक का समर्थन करता है।

यदि कोई भी गुई शामिल है, तो एक क्ली कमबैक होना चाहिए

वर्तमान में कोई जीयूआई नहीं।


बहुत दिलचस्प लग रहा है। क्या आपके पास कोई विचार है कि संबंधित टैग को खोए बिना फ़ाइलों को स्थानांतरित करने की संभावना को कैसे लागू किया जाए?
छात्र

@student: वर्तमान में एक 'मरम्मत' कमांड है जो स्थानांतरित और संशोधित फ़ाइलों से संबंधित है। (यदि आप दोनों एक फ़ाइल को स्थानांतरित करते हैं और संशोधित करते हैं, तो यह पता नहीं चलेगा।)
पॉल रूएन

शायद कोई भी वेरिएंट लिख सकता है mv, cpऔर rmजो आपके टैग्स को भी हैंडल करता है (उदाहरण के लिए उन्हें कॉल करें tmv, tcpऔर trm) तब किसी को टैग्स को कम से कम खोना नहीं होगा अगर कोई फाइलों को स्थानांतरित करने के लिए कमांडलाइन का उपयोग करता है ...
छात्र

@student TMSU अब कुछ स्क्रिप्ट है कि डेटाबेस तारीख तक रखने, जबकि फाइल सिस्टम कार्रवाई करने में शामिल हैं: tmsu-fs-mv, tmsu-fs-rmऔर tmsu-fs-merge
पॉल रुआन

मेरे प्रश्न का बहाना है लेकिन ... move स्वचालित रूप से किसी फ़ाइल को स्थानांतरित करने पर टैग को क्लोन क्यों नहीं किया जाता है? क्या मुझे मैन्युअल रूप से फ़ाइलों को अपडेट करने की आवश्यकता है जब चलती है?
erm3nda

6

मुझे लगता है कि यह आपकी सभी आवश्यकताओं को पूरा कर सकता है । किसी भी मामले में, यह एक अच्छा कोड है:

http://pages.stern.nyu.edu/~marriaga/software/oyepa

जीयूआई को क्यूटी की आवश्यकता होती है, लेकिन खोज के लिए एक कमांड-लाइन एप्लिकेशन है और यह तथ्य कि सभी टैग वास्तव में फ़ाइल नाम में हैं, यह टैग को हेरफेर करने के लिए तुच्छ बनाता है।


1
पृष्ठ से: "टैग जानकारी फ़ाइल नाम में संग्रहीत है" - तो टैग किए गए फ़ाइल नाम क्या दिखते हैं? BTW, उस पृष्ठ के लिंक बहुत दिलचस्प हैं: +1।
चार्ल्स स्टीवर्ट

रिपोर्ट के लिए बिल [काम सामान, घंटा, मुझे द्वारा उत्पादित] .odt
laramichaels

@laramichaels मुझे पता है कि यह बहुत पुराना है, लेकिन मुझे दृष्टिकोण बहुत दिलचस्पी का लगा। यदि यह प्रलेखन की कमी के लिए नहीं थे (कहीं भी यह नहीं बताया गया है कि फ़ाइल-नामकरण कैसे काम करता है) तो मैं इसे अपनाऊंगा। अगर आपके पास इस तरह के औजारों पर कोई खबर है, तो कृपया मुझे बताएं,
टॉमको

6

किसी ने उल्लेख नहीं किया है, लेकिन आपको निश्चित रूप से विस्तारित फ़ाइल सिस्टम विशेषताओं को देखना चाहिए। ext4 उदाहरण के लिए उनके पास है। इनसे निपटने के लिए उपकरण गेटफैट और सेटफैट हैं। बेशक, आपको कुछ खोल के साथ टैग की गई फ़ाइलों की खोज के लिए कुछ शेल स्क्रिप्ट लिखना होगा। उल्लिखित प्रश्नों के संबंध में सभी उत्तर "हां" हैं। आपको केवल यह ध्यान रखना चाहिए कि यह फाइल सिस्टम पर निर्भर है।


फ़ाइल के इनकोड डेटा को निश्चित रूप से सही तरीका होना चाहिए जो एक्सट्रीम 4 एफएस पर कर सकता है, लेकिन किसी भी बैकग्राउंड कॉम्पैटिबिलिटी की पेशकश नहीं करेगा। सही?
erm3nda

6

आश्चर्य है कि कोई भी उल्लेख किया है TagSpaces । यह आपकी सभी आवश्यकताओं को पूरा करता है क्योंकि टैग फ़ाइल नाम में संग्रहीत हैं और टैगस्पेस क्रॉस-प्लेटफ़ॉर्म है।

TagSpaces


1
टैगस्पेस में एक CLI फ़ॉलबैक नहीं होता है, इसलिए यह सभी आवश्यकताओं को पूरा नहीं करता है। या उसके पास सीएलआई है? अगर यह, कृपया, मुझे बताएं!
टॉमचो

डेबियन 9 एप्ट में आवेदन का कोई समर्थन नहीं है। कुछ भी आ रहा है? - - आप इन निर्देशों द्वारा ऐप को इंस्टॉल कर सकते हैं tagspaces.org/products
Léo Léopold Hertz at

क्या आप अपने प्रस्ताव की तुलना लिनक्स डेस्कटॉप सर्च टूल्स से कर सकते हैं?
लेओ लेपोल्ड हर्ट्ज़ '

5

आपको शायद उनके टैगिंग लाइब्रेरी, नेपोमुक के लिए पूरे केडीई डेस्कटॉप को स्थापित करने की आवश्यकता नहीं है। आपको अभी भी KDE बेस लाइब्रेरी स्थापित करनी होगी, हालांकि ...


1
हाँ अच्छी तरह से मैं इस का एक विकल्प खोजने की उम्मीद कर रहा था, लेकिन यह ऐसा नहीं दिखता ...
julien

2

लिनक्स डेस्कटॉप सर्च टूल के इस हालिया लेख में उल्लेख किया गया है कि ट्रैकर टैगिंग का समर्थन करता है। दुर्भाग्य से इसे पुराने संस्करण में आधा टूटा हुआ माना जाता है। शायद यह अब तय हो गया है?

  1. व्यवस्था चौड़ी नहीं।
  2. आप इसे वापस कर सकते हैं।
  3. यह गनोम के साथ बंडल है।

2

बीगल की कोशिश करो । मुझे लगता है कि यह बहुत अच्छा है।

यह सभी आवश्यकताओं को पूरा नहीं कर सकता है, और मुझे यकीन नहीं है कि क्या हो सकता है। उदाहरण के लिए, क्या फीफो फाइलें विस्तारित विशेषताओं का समर्थन करती हैं? यदि वे नहीं करते हैं, तो बीगल के पास एक पतन डेटाबेस है।


क्या बीगल गैर-नियमित फ़ाइलों को संभाल सकता है?
चार्ल्स स्टीवर्ट

@Charles स्टीवर्ट - आप गैर पाठ फ़ाइलों का मतलब है?
pcap शैक्षणिक

नहीं, मेरा मतलब है डिवाइस फ़ाइलें, सिम्लिंक, FIFOs, और सी
चार्ल्स स्टीवर्ट

वह लिंक दस्तावेज़ संगठन के बारे में एक परियोजना का उल्लेख नहीं करता है।
detly



1

तो आप कमांड लाइन, या कहीं और लिनक्स में सूक्ति में Nepomuk एकीकरण नहीं मिलेगा।

इसके विपरीत, ट्रैकर के साथ आपको kde एकीकरण AFAIK नहीं मिलेगा। सीएलआई पर यकीन नहीं।

तो दुर्भाग्य से, जवाब "नहीं" प्रतीत होता है।

इससे भी अधिक दुर्भाग्य से, इसका मतलब यह नहीं है कि यहां एक के लिए एक अच्छा अवसर है। उदाहरण के लिए, लिनक्स कमांडलाइन उपयोगिताओं में GUI फ़ाइल प्रबंधक के साथ बहुत कुछ नहीं है, इसलिए वास्तुशिल्प रूप से कोई सामान्य घटक नहीं है जिसे अवधारणा का समर्थन करने के लिए बढ़ाया जा सकता है।


0

मैंने एक छोटा सा प्रोग्राम बनाया जो इस उद्देश्य के लिए SQLite का उपयोग करता है। इसने मेरी जरूरत को हल कर दिया, लेकिन शायद यह आपकी भी मदद करे:

https://github.com/alvatar/dfym

इस दृष्टिकोण के साथ एकमात्र मुद्दा यह है कि चाल और विलोपन के साथ सिंक्रनाइज़ नहीं होता है, लेकिन यह अपेक्षाकृत स्थिर फ़ाइलों के लिए समस्या हल करता है।


0

TMSU

TMSU आपकी फ़ाइलों को टैग करने के लिए एक उपकरण है। यह टैग और एक आभासी फाइल सिस्टम को लागू करने के लिए एक सरल कमांड-लाइन उपयोगिता प्रदान करता है जो आपको किसी अन्य प्रोग्राम से आपकी फ़ाइलों का टैग-आधारित दृश्य प्रदान करता है।

TMSU आपकी फ़ाइलों को किसी भी तरह से परिवर्तित नहीं करता है: वे डिस्क पर या नेटवर्क पर अपरिवर्तित रहते हैं, जहाँ भी आपके द्वारा उन्हें रखा जाता है। TMSU अपने स्वयं के डेटाबेस को बनाए रखता है और आप बस एक अतिरिक्त दृश्य प्राप्त करते हैं, जिसे आप अपने द्वारा लगाए गए टैग के आधार पर जहां चाहें पसंद कर सकते हैं।

आश्चर्यचकित किसी ने भी इसका उल्लेख नहीं किया है।


1
आप नहीं देख पाए ... यह उच्चतम मतदान जवाब
पुफेरफिश

-1

मेरा सुझाव है कि फ़ाइल सिस्टम के ऊपर और बाहर इस प्रकार की सुविधाओं के लिए एक संस्करण नियंत्रण प्रणाली जैसे कि सबवर्सन पर एक नज़र डालें। कुछ आपके लिए दूसरों की तुलना में बेहतर हो सकते हैं लेकिन आम तौर पर:

  • कई समर्थन टैगिंग (निश्चित रूप से तोड़फोड़)।
  • कई पार मंच हैं; विंडोज, मैक, लिनक्स, बहुत सारे यूनिक्स।
  • कई में GUI फ्रंट एंड और कमांड लाइन क्लाइंट दोनों हैं।
  • कई पहले से ही आपके पसंदीदा प्रोग्रामिंग / स्क्रिप्टिंग भाषा के लिए बाइंडिंग हैं।
  • कई आसानी से वापस आ जाते हैं।
  • कई को एक तरह से या किसी अन्य में बहुत आसानी से साझा करने के लिए डिज़ाइन किया गया है।
  • कई आपको पहुंच को नियंत्रित करने की अनुमति देते हैं।
  • आपको पहिये का फिर से आविष्कार करने की आवश्यकता नहीं है।
    • आप लाखों लोगों द्वारा पहले से उपयोग किए गए मानक कमांड / टूल सीखते हैं और उनका उपयोग करते हैं।
  • आप इसे आज अपने पसंदीदा OS रेपो के लिए स्थापित कर सकते हैं; apt-get install, yum install
  • आपको संस्करण प्रबंधन "मुफ्त में" भी मिलता है।

तोड़फोड़ के साथ एक cli उदाहरण: ~/svn/atestrepository: $ svn propset mytag "something" dir1 property 'mytag' set on 'dir1' $ svn propset myothertag "nothing" dir1/file1 property 'myothertag' set on 'dir1/file1' $ svn propset anemptytag "" dir1/file2 property 'anemptytag' set on 'dir1/file2'

$ svn propget -R mytag dir1 - something ~/svn/atestrepository: $ svn propget -R myothertag dir1/file1 - nothing $ svn propget -R anemptytag dir1/file2 - $ svn proplist dir1/file2 Properties on 'dir1/file2': anemptytag svn:keywords

मैं अनुशंसा नहीं करूंगा कि ये उपकरण बड़े (गीगाबाइट आकार) के लिए नियमित रूप से बाइनरी फ़ाइलों को बदल रहे हैं, लेकिन बाकी सब के लिए वे पहले से ही अच्छी तरह से सिद्ध हैं और बहुत बड़े आकार के पैमाने हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.