ทางออกที่ดีสำหรับการติดแท็กไฟล์ใน linux คืออะไร? [ปิด]


71

ฉันกำลังมองหาวิธีติดแท็กไฟล์ของฉันและค้นหา / กรองตามแท็กเหล่านั้น

นี่คือข้อกำหนดของฉัน ( อัพเดท ):

  • ไฟล์ใด ๆ ที่ผู้ใช้สามารถอ่านได้สามารถติดแท็กได้อย่างอิสระ
  • ผู้ใช้สามารถค้นหาไฟล์ที่ตรงกับหนึ่งหรือหลายแท็ก
  • สามารถย้ายไฟล์ได้โดยไม่สูญเสียแท็กที่เชื่อมโยงก่อนหน้านี้
  • ระบบสามารถสำรองข้อมูลได้อย่างง่ายดาย
  • ไม่มีการพึ่งพาสภาพแวดล้อมเดสก์ทอปใด ๆ
  • หาก GUI ใด ๆ ที่เกี่ยวข้องจะต้องมีทางเลือก cli

ฉันหวังว่าระบบไฟล์พื้นฐานและแฮกเกอร์ coreutils เพื่อจัดการกับสิ่งนี้ แต่ฉันยังไม่ได้คิดเกี่ยวกับเรื่องนี้มากพอ
ในขณะเดียวกันฉันจะตรวจสอบสายสืบและ metatracker ซึ่งได้รับการกล่าวถึงที่นี่และดูว่าพวกเขาทำงานอย่างไร


โอเคบีเกิ้ลมีการพึ่งพา gnome มากและตัวติดตามก็โอเค แต่ก็ยังมีการพึ่งพาบางอย่างที่ฉันไม่ชอบ ...

รับทำวิจัยบางมากขึ้นและวิธีที่จะไปได้เป็นอย่างดีจะขยายแอตทริบิวต์ของแฟ้ม
นั่นเป็นวิธีแก้ปัญหาดั้งเดิมสำหรับระบบไฟล์ล่าสุด แต่ยังไม่ได้รับการสนับสนุนอย่างดี (coreutils ส่วนใหญ่จะทำลายพวกเขาตามค่าเริ่มต้น cp เช่นต้องการแฟล็ก -a เพื่อเก็บรักษาไว้) อยากได้ยินความคิดบางอย่างเกี่ยวกับการใช้พวกเขาในขณะที่ฉันลองใช้มือของตัวเองในการแฮ็คตัวเองแม้ว่านี่อาจรับประกันคำถามใหม่


2
ปัญหาเกี่ยวกับคุณสมบัติไฟล์เพิ่มเติม: (i) จากประสบการณ์ของฉันมันเป็นเรื่องที่น่ารำคาญเมื่อคุณต้องการสำรองข้อมูล (ii) คุณไม่สามารถใช้งานได้เมื่อคุณย้ายระหว่างระบบไฟล์ นอกเหนือจากนั้นพวกเขาจะเป็นสิ่งที่ถูกต้อง
Charles Stewart


ในฟอรัม PC-BSD โดยอ้างอิงถึงคำถามในรุ่น 2010: PC-BSD, คุณสมบัติเพิ่มเติมและการติดแท็ก แนวทางของ OpenMeta และ Apple
Graham Perrin

คำตอบ:


13

ยังไม่ชัดเจนว่าคุณต้องการค้นหาแบบใด ถ้าคุณต้องการให้มันทำงานได้ทุกที่ในยูนิกซ์แทนที่จะเป็นแค่โฮมไดเร็กตอรี่ของคุณ, และคุณต้องการค้นหาตามชื่อพา ธ , โครงร่างต่อไปนี้สามารถใช้งานได้, โดยมีเชลล์แฮ็คนิดหน่อย, และใช้มาตรฐานlocatedb:

  1. แต่ละไดเร็กทอรีที่มีไฟล์ที่ติดแท็กอย่างน้อยหนึ่งไฟล์ต้องการไดเรกทอรีย่อยมาตรฐาน.path-tags;
  2. แต่ละไฟล์ในไดเรกทอรี $ FILE พร้อมลิงก์ $ TAG (ซึ่งไม่ควรมีอักขระถ่าน_) มีลิงก์$TAG_$FILE -> ../$FILE

ฉันปล่อยรายละเอียดของlocate-tagสคริปต์ให้คุณ มันควรจะเป็นแบบสองหรือสามซับโดยใช้locateคำสั่งและแฮ็กเชลล์เท่านั้น (หากคุณสนใจฉันสามารถเขียนหนึ่ง)

แชปของ KDE บางตัวพูดถึงโครงร่างประเภทนี้สำหรับเมตาดาต้าแม้ว่าฉันจะจำรายละเอียดไม่ได้

findมันก็ควรจะเป็นไปได้ที่จะทำที่ซับซ้อนมากขึ้นการทดสอบเนื้อหาการตรวจสอบขึ้นอยู่กับโครงการนี้กับสคริปต์ที่คล้ายกันห่อรอบ

ความคิดเกี่ยวกับข้อกำหนดที่อัปเดต

  1. ไฟล์ใด ๆ ที่ผู้ใช้สามารถอ่านได้สามารถติดแท็กได้อย่างอิสระ - ใช่ไม่น่าจะมีปัญหา
  2. ผู้ใช้สามารถค้นหาไฟล์ที่ตรงกับหนึ่งหรือหลายแท็ก - เช่นเดียวกัน
  3. ไฟล์สามารถย้ายไปมาได้โดยไม่สูญเสียแท็กที่เกี่ยวข้องก่อนหน้านี้ - ไดเรกทอรีที่พวกเขาอาศัยอยู่สามารถย้ายได้อย่างอิสระ แต่ถ้าไฟล์ถูกย้ายจากไดเรกทอรีเรากำลังมีปัญหา หากแท็กใช้แบบฟอร์ม$TAG_$INODE_$FILEและเรามีวิธีที่มีประสิทธิภาพในการค้นหาว่าพา ธ ใดมีไอโหนดที่กำหนดเราก็สามารถทำเช่นนี้สูญเสียแท็กได้ก็ต่อเมื่อเราย้ายออกจากระบบไฟล์ การคัดลอกไฟล์อาจสร้างปัญหาและนี่ก็ซับซ้อนกว่าคำแนะนำเดิมของฉันอย่างชัดเจน
  4. ระบบสามารถสำรองข้อมูลได้ง่าย - ไม่ยาก
  5. ไม่มีการพึ่งพาสภาพแวดล้อมเดสก์ทอปใด ๆ - ไม่มี
  6. หาก gui ใด ๆ ที่เกี่ยวข้องจะต้องมีทางเลือก cli - ที่เราอาศัยอยู่!

Postscript ไฟล์ "reverse-inode-lookup" ซึ่งอธิบายโดยลิงก์(2) ที่คุณแสดงให้ฉันเห็นในคำตอบของคุณถึง(1)สามารถใช้เพื่อให้โครงสร้างพื้นฐานเพิ่มเติมบางอย่าง เราสามารถเรียกใช้บริการในไฟล์ค้นหาแบบย้อนกลับซึ่งตรวจสอบว่าแต่ละไอโหนดที่ระบุในชื่อไฟล์ของแท็กตรงกับไอโหนดของไฟล์ (ถ้ามี) แท็กชี้ไปที่ หากไม่มีการจับคู่การผ่าตัดที่ต้องการสามารถดำเนินการได้ (inode ยังคงอยู่หรือไม่มันอยู่ที่ไหน) และไฟล์ค้นหาแบบย้อนกลับกำลังกลายพันธุ์หรือสร้างใหม่และการเชื่อมโยงแท็กจะถูกอัพเดต

ฉันคาดว่าจะเป็นกรณีที่ยุ่งยาก: หากไฟล์ที่ติดแท็กไม่ใช่ตำแหน่งที่แท็กบอกว่าควรเป็นไฟล์ค้นหาแบบย้อนกลับบอกว่ามันยังคงมีอยู่ แต่ไฟล์ prodigal ไม่ใช่ตำแหน่งที่ไฟล์ค้นหาบอกว่าเป็นไฟล์ค้นหาที่อยู่นอก วันที่? มีสองสามวิธีในการจัดการกับกรณีนี้ นอกเหนือจากนี้งานทั้งหมดนี้น่าจะเป็นสิ่งที่ Perl เหมาะกับ ...


1
นี่เป็นสิ่งที่ดีและฉันก็คิดถึงการใช้ symlink ด้วย ปัญหาคือไม่สามารถย้ายไฟล์โดยไม่สูญเสียแท็ก ตามหลักแล้วแท็กจะเป็นผู้ไม่เชื่อเรื่องเส้นทางและการค้นหาแท็กควรส่งคืนไฟล์จริงแทนที่จะเป็น symlink ที่ตายแล้ว ... PS: ฉันทุกคนใช้วิธีแก้ปัญหาแบบเชลล์ แต่ฉันคิดว่าโดเมนปัญหาทำให้มันเป็นแบบนั้น ต้องการจะเจ็บปวดสวยในการรักษาเพียงผ่านเชลล์สคริปต์ผมหวังว่าคนที่พิสูจน์ฉันผิด
Julien

ฉันได้แก้ไขคำถามของฉันไปที่ (หวังว่า) ทำให้ชัดเจนว่าฉันจะแก้ปัญหาแบบไหน ไชโย
Julien

ประณามฉันไม่เคยรู้เลยว่า inodes ที่ชอบ guids แบบถาวรสำหรับไฟล์นั่นเป็นอาหารสำหรับความคิด!
Julien

1
inodes เป็น uids แต่มันเชื่อมโยงกับ fs ที่กำหนดดังนั้นมันจึงไม่ใช่ guids สิ่งนี้ไม่ใช่สิ่งที่เลวร้ายเนื่องจากการคัดลอกการสำรองข้อมูลการเก็บถาวร & c หมายความว่าไฟล์ได้รับการทำซ้ำและเก็บไว้ในไฟล์อื่น ๆ และคุณต้องการให้สถานะ fs ให้ข้อมูลเพียงพอที่จะคลี่คลายผลลัพธ์
Charles Stewart

1
ฉันพลาด Punchline ซอฟต์แวร์ใดบ้างที่สามารถรองรับสิ่งนี้ได้? ฉันหวังว่าจะสามารถใช้งานได้อย่างสบาย ๆ โดยไม่ต้องเขียนโครงสร้างพื้นฐานของตัวเอง (แต่เรียบง่ายเพื่อให้ฉันสามารถขยายขอบเขตได้เองตามต้องการ)
ThorSummoner

22

ฉันเพิ่งเปิดตัวอัลฟาของโปรแกรมใหม่ของฉันที่พยายามให้ฟังก์ชันการทำงานนี้ ปัจจุบันมีคุณสมบัติตรงตามข้อกำหนดของคุณบางส่วน แต่ไม่ทั้งหมด มันอาจเป็นที่สนใจของคุณต่อไป มันมีเครื่องมือบรรทัดคำสั่งสำหรับการติดแท็กและระบบไฟล์เสมือนสำหรับการเรียกดู (ที่แท็กจะถูกแสดงโดยไดเรกทอรี)

http://www.tmsu.org/

ไฟล์ใด ๆ ที่ผู้ใช้สามารถอ่านได้สามารถติดแท็กได้อย่างอิสระ

ใช่.

ผู้ใช้สามารถค้นหาไฟล์ที่ตรงกับหนึ่งหรือหลายแท็ก

ใช่. ทั้งผ่านเครื่องมือบรรทัดคำสั่งหรือโดยการเรียกดูไดเรกทอรีแท็กในระบบไฟล์เสมือน

สามารถย้ายไฟล์ได้โดยไม่สูญเสียแท็กที่เชื่อมโยงก่อนหน้านี้

ไม่ได้อย่างไรก็ตามแอปพลิเคชันเก็บลายนิ้วมือของไฟล์ที่ติดแท็กซึ่งใช้เพื่อระบุไฟล์ที่ถูกย้าย คำสั่ง 'ซ่อมแซม' มีให้ซึ่งจะอัปเดตพา ธ ของไฟล์ที่ถูกย้าย (เห็นได้ชัดว่ากลไกนี้พังถ้าไฟล์ถูกย้ายและแก้ไข)

ระบบสามารถสำรองข้อมูลได้อย่างง่ายดาย

ใช่. มันเป็นไฟล์ฐานข้อมูลง่ายๆของ Sqlite 3

ไม่มีการพึ่งพาสภาพแวดล้อมเดสก์ทอปใด ๆ

ใช่. ไม่มีการอ้างอิงและสามารถเรียกใช้เป็นระบบไฟล์เสมือนได้จึงมีไว้เพื่ออ่านเป็นระบบไฟล์ในโปรแกรมใด ๆ ที่สนับสนุนลิงก์สัญลักษณ์

หาก GUI ใด ๆ ที่เกี่ยวข้องจะต้องมีทางเลือก cli

ไม่มี GUI ในปัจจุบัน


ดูน่าสนใจมาก คุณมีความคิดวิธีการใช้ความเป็นไปได้ในการย้ายไฟล์โดยไม่สูญเสียแท็กที่เกี่ยวข้องหรือไม่?
นักเรียน

@ นักเรียน: ขณะนี้มีคำสั่ง 'ซ่อมแซม' ซึ่งเกี่ยวข้องกับการย้ายและแก้ไขไฟล์ (หากคุณทั้งย้ายและแก้ไขไฟล์จะไม่ถูกตรวจจับ)
Paul Ruane

บางทีหนึ่งสามารถเขียนสายพันธุ์ของmv, cpและrmที่จัดการแท็กของคุณเช่นกัน (เรียกพวกเขาตัวอย่างเช่นtmv, tcpและtrm) แล้วใครจะไม่สูญเสียแท็กอย่างน้อยถ้าใครใช้บรรทัดคำสั่งที่จะย้ายไฟล์รอบ ...
นักเรียน

@student TMSU ขณะนี้มีสคริปต์บางอย่างที่ดำเนินการระบบแฟ้มขณะที่การรักษาฐานข้อมูลถึงวันที่: tmsu-fs-mv, และtmsu-fs-rm tmsu-fs-merge
Paul Ruane

แก้คำถามของฉัน แต่ ... ¿ทำไมไม่ลอกแบบแท็กเมื่อย้ายไฟล์โดยอัตโนมัติ ฉันจำเป็นต้องอัพเดตไฟล์ด้วยตนเองเมื่อทำการย้ายหรือไม่?
erm3nda

6

ฉันคิดว่านี่อาจเป็นไปตามความต้องการของคุณทั้งหมด ไม่ว่าในกรณีใดมันเป็นโค้ดที่ยอดเยี่ยม:

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

GUI ต้องการ Qt แต่มีแอปพลิเคชันบรรทัดคำสั่งสำหรับการค้นหาและความจริงที่ว่าแท็กทั้งหมดอยู่ในชื่อไฟล์ทำให้ง่ายต่อการจัดการแท็ก | ไฟล์จาก cli


1
จากหน้า: "ข้อมูลแท็กถูกเก็บไว้ในชื่อไฟล์" - ดังนั้นชื่อไฟล์ที่ติดแท็กจะมีลักษณะอย่างไร BTW ลิงก์ในหน้านั้นน่าสนใจมาก: +1
Charles Stewart

รายงานสำหรับใบเรียกเก็บเงิน [งาน, ชั่วโมง, ที่ผลิตโดยฉัน] .odt
laramichaels

@laramichaels ฉันรู้ว่ามันค่อนข้างเก่า แต่ฉันพบวิธีการที่น่าสนใจมาก หากไม่มีเอกสารประกอบ (ไม่มีที่ใดก็มีอธิบายวิธีการตั้งชื่อไฟล์) ฉันจะปรับใช้ หากคุณมีข่าวเกี่ยวกับเครื่องมือดังกล่าวโปรดแจ้งให้เราทราบ
TomCho

6

ไม่มีใครพูดถึง แต่คุณควรดูที่แอตทริบิวต์ของระบบไฟล์เพิ่มเติม ext4 เช่นมีพวกเขา มีเครื่องมือ getfattr และ setfattr เพื่อจัดการกับพวกเขา แน่นอนคุณจะต้องเขียนเชลล์สคริปต์เพื่อค้นหาไฟล์ที่ติดแท็กด้วย เกี่ยวกับคำถามที่กล่าวถึงคำตอบทั้งหมดคือ "ใช่" คุณควรคำนึงว่ามันขึ้นอยู่กับระบบไฟล์


ข้อมูลไอโหนดของไฟล์ควรเป็นวิธีที่ถูกต้องในการทำ ext4 fs แต่จะไม่ให้ความเข้ากันได้แบบย้อนหลัง ขวา?
erm3nda

6

แปลกใจที่ไม่มีใครได้กล่าวถึงTagSpaces ตรงตามความต้องการของคุณทั้งหมดเพราะแท็กจะถูกจัดเก็บในชื่อไฟล์และ TagSpaces เป็นข้ามแพลตฟอร์ม

TagSpaces


1
แท็กสเปซไม่มีทางเลือก CLI ดังนั้นจึงไม่เป็นไปตามข้อกำหนดทั้งหมด หรือมันมี CLI ถ้าเป็นเช่นนั้นโปรดแจ้งให้เราทราบ!
TomCho

ไม่มีการรองรับแอพพลิเคชั่นใน Debian 9 apt มีอะไรใหม่ - - คุณสามารถติดตั้งแอปเหล่านี้คำแนะนำtagspaces.org/products
LéoLéopoldเฮิรตซ์ 준 영

คุณช่วยเปรียบเทียบข้อเสนอของคุณกับเครื่องมือ Linux Desktop Search ได้หรือไม่?
LéoLéopold Hertz 준영

5

คุณอาจไม่จำเป็นต้องติดตั้งเดสก์ท็อป KDE ทั้งหมดสำหรับไลบรารีการติดแท็ก Nepomuk คุณยังคงต้องติดตั้งไลบรารีฐานของ KDE แม้ว่า ...


1
ใช่ดีผมก็หวังที่จะหาทางเลือกในการนี้ แต่มันก็ไม่ได้ดูเลย ...
Julien

2

บทความล่าสุดเกี่ยวกับเครื่องมือค้นหาเดสก์ท็อป Linuxกล่าวถึงการติดตามการสนับสนุนการติดแท็ก น่าเสียดายที่มันควรจะแตกครึ่งในเวอร์ชั่นเก่าที่ทดสอบ อาจจะได้รับการแก้ไขในขณะนี้?

  1. ระบบไม่กว้าง
  2. คุณสามารถสำรองข้อมูลได้
  3. มันมาพร้อมกับ Gnome

2

ลองบีเกิ้ล ฉันพบว่ามันค่อนข้างดี

อาจไม่เป็นไปตามข้อกำหนดทั้งหมดและฉันไม่แน่ใจว่าจะทำอย่างไร ตัวอย่างเช่นไฟล์ FIFO สนับสนุนแอตทริบิวต์เพิ่มเติมหรือไม่ หากไม่มีBeagleจะมีฐานข้อมูลสำรอง


บีเกิ้ลสามารถจัดการไฟล์ที่ไม่ปกติได้หรือไม่?
Charles Stewart

@Charles Stewart - คุณหมายถึงไฟล์ที่ไม่ใช่ข้อความหรือไม่?
pcapademic

ไม่ฉันหมายถึงไฟล์อุปกรณ์ symlink FIFOs & c
Charles Stewart

ลิงค์นั้นไม่ได้อ้างถึงโครงการเกี่ยวกับการจัดระเบียบเอกสาร
detly



1

ดังนั้นคุณจะไม่พบการรวมกันของ Nepomuk ในคำพังเพยที่บรรทัดคำสั่งหรือที่อื่น ๆ ใน Linux

ในทางกลับกันด้วย Tracker คุณจะไม่พบ AFE การรวม kde ไม่แน่ใจเกี่ยวกับ CLI

น่าเสียดายที่คำตอบนั้นดูเหมือนจะ "ไม่"

น่าเสียดายยิ่งกว่านี้ไม่ได้หมายความว่ามีโอกาสที่ดีสำหรับการสร้างสิ่งนี้ ยูทิลิตี commandline Linux ไม่มีอะไรเหมือนกันมากกับตัวจัดการไฟล์ GUI ตัวอย่างเช่นดังนั้นในทางสถาปัตยกรรมจึงไม่มีส่วนประกอบทั่วไปที่สามารถขยายเพื่อรองรับแนวคิดได้


0

ฉันทำโปรแกรมเล็ก ๆ ที่ใช้ SQLite เพื่อจุดประสงค์นี้ มันแก้ไขความต้องการของฉัน แต่อาจช่วยคุณได้เช่นกัน:

https://github.com/alvatar/dfym

ปัญหาเดียวของวิธีนี้คือไม่ได้ซิงโครไนซ์กับการย้ายและการลบ แต่มันแก้ปัญหาสำหรับไฟล์ที่ค่อนข้างคงที่


0

TMSU

TMSU เป็นเครื่องมือสำหรับการแท็กไฟล์ของคุณ มันมียูทิลิตี้บรรทัดคำสั่งที่ง่ายสำหรับการใช้แท็กและระบบไฟล์เสมือนเพื่อให้มุมมองแบบแท็กของไฟล์ของคุณจากโปรแกรมอื่น ๆ

TMSU จะไม่เปลี่ยนแปลงไฟล์ของคุณในทางใด ๆ : ไฟล์เหล่านั้นจะยังคงไม่เปลี่ยนแปลงในดิสก์หรือบนเครือข่ายไม่ว่าคุณจะวางที่ใดก็ตาม TMSU รักษาฐานข้อมูลของตัวเองและคุณจะได้รับมุมมองเพิ่มเติมซึ่งคุณสามารถติดตั้งได้ตามที่คุณต้องการตามแท็กที่คุณตั้งค่า

แปลกใจที่ไม่มีใครพูดถึงมัน


1
คุณพลาดมัน ... เป็นคำตอบที่ได้รับการโหวตมากที่สุด
ปลาปักเป้า

-1

ฉันขอแนะนำให้ดูที่ระบบควบคุมเวอร์ชันเช่นการโค่นล้มสำหรับคุณสมบัติประเภทเหล่านี้ด้านบนและเหนือกว่าระบบไฟล์ บางคนอาจเหมาะสำหรับคุณมากกว่าคนอื่น แต่โดยทั่วไป:

  • รองรับการติดแท็กจำนวนมาก (การโค่นล้มอย่างแน่นอน)
  • หลายคนเป็นแพลตฟอร์มข้าม Windows, Mac, Linux, Unixes เกือบทั้งหมด
  • หลายคนมีปลายด้านหน้า GUI และไคลเอนต์บรรทัดคำสั่ง
  • หลายคนมีการเชื่อมโยงสำหรับการเขียนโปรแกรม / ภาษาสคริปต์ที่คุณชื่นชอบ
  • หลายคนได้รับการสำรองอย่างง่ายดาย
  • หลายคนได้รับการออกแบบให้สามารถแบ่งปันได้อย่างง่ายดายไม่ทางใดก็ทางหนึ่ง
  • หลายคนยอมให้คุณควบคุมการเข้าถึง
  • คุณไม่ต้องคิดค้นวงล้อใหม่
    • คุณเรียนรู้และใช้คำสั่ง / เครื่องมือมาตรฐานที่มีผู้ใช้หลายล้านคนใช้แล้ว
  • คุณสามารถติดตั้งได้แล้ววันนี้สำหรับ repo 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

ฉันไม่แนะนำให้ใช้เครื่องมือเหล่านี้สำหรับไฟล์ไบนารี่ขนาดใหญ่ (ขนาดกิกะไบต์) เป็นประจำ แต่สำหรับทุกสิ่งทุกอย่างที่พวกเขาได้รับการพิสูจน์แล้วและมีขนาดใหญ่มาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.