Spotlight นำเข้าไฟล์ที่คัดลอกหรือย้ายอีกครั้งหรือไม่


1

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

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

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

คำตอบ:


1

เพื่อตรวจสอบว่าการทำดัชนีเกิดขึ้นกับ mv / cp หรือไม่ คุณสามารถจับตามองด้วย fseventer . มันสังเกตการเปลี่ยนแปลงของระบบไฟล์โดยใช้ API พื้นฐานเช่นเดียวกับ Spotlight


2

โดยทั่วไปไม่จำเป็นต้องทำการสร้างดัชนีใหม่เนื่องจากไฟล์ I / O ใด ๆ ที่ผ่านเคอร์เนลรวมถึง UNIX mv และ cp คำสั่งทำให้เกิดการอัพเดทในดัชนี Spotlight ด้วยวิธีนี้ดัชนีจะเป็นปัจจุบันอยู่เสมอ

สปอตไลท์มาอีกนานตั้งแต่นั้นมา แต่เมื่อ 10.4 Tiger ออกมามีบทความดีๆอยู่สองสามเรื่องเกี่ยวกับวิธีการทำงานอธิบายเทคโนโลยี หนึ่งบทความดังกล่าวเป็นที่ครอบคลุม รีวิว Ars Technica Tiger . อ้างถึง:

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

...

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

ปลั๊กอินตัวนำเข้าข้อมูลเมตาจะถูกเก็บไว้ในโฟลเดอร์ Spotlight ในโฟลเดอร์ Library ต่างๆ ตามปกติสถานที่ที่เจาะจงยิ่งกว่าจะมีความสำคัญกว่า: ~/Library/Spotlight แทนที่ /Library/Spotlightและอื่น ๆ

ไฟล์ i / o ใด ๆ ที่ผ่านเคอร์เนลของ Tiger จะทริกเกอร์ผู้นำเข้าข้อมูลเมตาที่เหมาะสม การผสานระดับเคอร์เนลนี้ทำให้มั่นใจได้ว่าดัชนีสปอตไลท์เป็นปัจจุบันอยู่เสมอ

หวังว่านี่จะช่วยได้ คนอื่น ๆ อาจสามารถส่องแสงในการปรับปรุงสถาปัตยกรรม Spotlight ตั้งแต่ Tiger ออกมา ฉันเป็น แต่ผู้ใช้ที่ต่ำต้อย


นั่นเป็นเรื่องที่น่าสนใจอย่างมาก fideli - ฉันไม่รู้ว่า OS X นั้นอนุรักษ์นิยมเช่นนั้นเพื่อจัดทำดัชนีใหม่ในการดำเนินการเคอร์เนล I / O ทุกครั้ง ฉันพร้อมที่จะยอมรับคำตอบของคุณรอสองสิ่งที่ฉันต้องการค้นหา (หรือถ้ามีคนอื่นรู้ :) (1) ทำดัชนีที่เกิดขึ้นกับการดำเนินงานเช่น mv / cp ทำดัชนีไฟล์ใหม่ทั้งหมดหรือเพียงแค่ ข้อมูลเมตาที่มีการเปลี่ยนแปลงอย่างมีเหตุผลเช่นตำแหน่งเวลาในการเข้าถึงเป็นต้น (2) พฤติกรรมนี้ยังคงเหมือนเดิมใน Snow Leopard หรือไม่? ฉันรู้ว่าการปรับปรุงประสิทธิภาพของสปอตไลท์มากมายนั้นได้รับการขนานนามให้กับ Leopard และดูเหมือนว่าสิ่งนี้จะเปลี่ยนไป ขอบคุณ!
Adrian Petrescu

หวังว่าบางคนสามารถเพิ่มคำตอบของฉันได้ในขณะที่ฉันหมดความรู้เรื่อง Spotlight แล้ว
fideli

ขอบคุณสำหรับการเริ่มต้น :) ฉันได้เพิ่มความโปรดปรานให้กับคำถามเพื่อดึงดูดคำตอบของคำถามที่คุณยกมา แต่ถ้ามันไม่ได้ผลฉันจะยอมรับของคุณ ไชโย!
Adrian Petrescu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.