วัตถุประสงค์ของโฟลเดอร์ + ที่หายไปใน Linux และ Unix คืออะไร


644

มีโฟลเดอร์ที่รูทของระบบปฏิบัติการ Linux และ Unix ชื่อ /lost+found/

มีไว้เพื่ออะไร? ฉันจะโต้ตอบกับสถานการณ์นี้ภายใต้สถานการณ์ใด ฉันจะโต้ตอบกับมันอย่างไร?


โปรดทราบว่าใช้ ext2 (และ ext3 และ ext4) lost+foundเท่านั้น หากคุณต้องการซ่อนให้ใช้ระบบไฟล์อื่นหรือติดตั้งที่อื่นเก็บทุกอย่างไว้ในไดเรกทอรีย่อยและเชื่อมโยงไดเรกทอรีย่อยไปยังตำแหน่ง "ของจริง" ที่คุณใช้ข้อมูล
Adam Katz

4
@Gilles บางคนใจดีพอที่จะเพิ่มมัน: en.wikipedia.org/wiki/Fsck#Use
David Kennedy

โปรดทราบว่าlost+foundเฉพาะกับระบบไฟล์ส่วนขยาย Linux (ext2–4) Unices เช่น FreeBSD มักไม่มีไดเรกทอรีนี้ในระบบไฟล์ (UFS, ZFS)
FUZxxl

5
ขออภัยlost+foundมีการใช้งานจริงตลอดไปในระบบ BSD อันที่จริงฉันเพิ่งตรวจสอบและมันอยู่ที่นั่นใน 4.3BSD และฉันก็จำได้เร็วกว่านี้มาก และเป็นที่แน่นอนใน FreeBSD วันนี้
Bob Eager

@BobEager ขอบคุณสำหรับการยืนยันว่า ผมคิดว่าเป็นอย่างดี แต่ผมก็เต็มใจที่จะยอมรับว่าบางทีผมจำไม่ถูกต้อง ...
Pryftan

คำตอบ:


577

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

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

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

ไฟล์ยังสามารถปรากฏขึ้นได้lost+foundเนื่องจากระบบไฟล์อยู่ในสถานะไม่สอดคล้องเนื่องจากซอฟต์แวร์หรือฮาร์ดแวร์บั๊ก หากเป็นกรณีนี้เป็นวิธีที่คุณสามารถค้นหาไฟล์ที่สูญหาย แต่การซ่อมแซมระบบสามารถกู้คืนได้ ไฟล์อาจมีหรือไม่มีข้อมูลที่เป็นประโยชน์และแม้ว่าไฟล์เหล่านั้นอาจไม่สมบูรณ์หรือล้าสมัย ทุกอย่างขึ้นอยู่กับความเสียหายของระบบไฟล์

ในระบบไฟล์หลาย ๆlost+foundไดเรกทอรีเป็นบิตพิเศษเพราะมัน preallocates บิตของพื้นที่สำหรับfsckการฝากไฟล์ที่นั่น (พื้นที่ไม่ได้มีไว้สำหรับข้อมูลไฟล์ที่มีfsckอยู่ในนั้นมีไว้สำหรับรายการไดเรกทอรีที่fsckต้องใช้) หากคุณลบโดยไม่ตั้งใจlost+foundอย่าสร้างใหม่ด้วยmkdirใช้mklost+foundถ้ามี


16
นอกจากนี้หาก fsck ลบโดยไม่ตั้งใจอาจสร้างใหม่ในครั้งถัดไปที่พบว่าระบบไฟล์สะอาด (ซึ่งอาจจะเป็นการบูตครั้งต่อไป)
Derobert

30
โฟลเดอร์นี้เป็นสิ่งที่ควรตรวจสอบและล้างเป็นครั้งคราวหรือไม่?
TheLQ

9
@TheLQ เฉพาะในกรณีที่ระบบไฟล์ของคุณได้รับความเสียหายอย่างกว้างขวางfsckจำเป็นต้องมีและจะกล่าวถึงการค้นหาไฟล์และเชื่อมโยงไฟล์เหล่านั้นlost+foundด้วย ใน 20 ปีกับระบบไฟล์ต่าง ๆ ฉันเคยเห็นครั้งนี้ครั้งเดียวเท่านั้น และนั่นคือก่อนการลงทะเบียนเป็นบรรทัดฐาน
Alexios

6
ผมคิดว่ามันก็ยังปรากฏอยู่ถ้าคุณฟอร์แมตฮาร์ดดิสก์ของคุณ (ผมเปลี่ยนจาก NTFS เพื่อ ext4 และปรากฏ)
ปึก

6
@puk lost+foundไดเรกทอรีจะถูกสร้างขึ้นทุกครั้งที่คุณสร้างระบบไฟล์ ext4 (เช่นเดียวกับระบบไฟล์อื่น ๆ ) ไม่ว่าจะเป็นส่วนหนึ่งของการติดตั้งระบบหรือไม่ก็ตาม “ ฟอร์แมตฮาร์ดดิสก์ของคุณ” เป็นเพียงกรณีเดียว อะไรคือสิ่งfsckที่อาจเพิ่มไฟล์ที่นั่น
Gilles

64

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


4
อย่างไรก็ตามจุดที่ถูกต้อง: สิ่งเหล่านี้สามารถสร้างความรำคาญได้ ตัวอย่างเช่นเมื่อพยายามfindดำเนินการกับext[2|3|4]พาร์ติชั่นหนึ่งตัวหรือมากกว่าจากบัญชีผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบคุณจะได้รับข้อผิดพลาด"สิทธิ์ถูกปฏิเสธ" ที่ไม่จำเป็นทั้งหมด แน่นอนมีวิธีที่จะหลีกเลี่ยงข้อผิดพลาดประเภทนั้น - แต่มันค่อนข้างอึดอัดเพราะมาตรฐานfind . -name '*whatever*'จะไม่ทำเคล็ดลับ
ไวยากรณ์

2
@syntaxerror: ดีที่จะได้ยินคุณบอกว่าเกี่ยวกับ annoyances ของพบ: `./lost+found ': ไม่อนุญาต มันทำให้ฉันเป็นครั้งคราวด้วยเช่นกัน ...
Johan E

1
@Syntaxerror เหตุผลที่ฉันมาถึงคำถามนี้คือเพราะฉันทำการค้นหาการดำเนินการและพบว่าการสร้างPermission deniedคำเตือน ด้วยคำตอบของคำถามนี้ฉันรู้ว่าlost+foundเป็นส่วนหนึ่งของระบบไฟล์และดังนั้นฉันจึงสามารถละเว้นคำเตือนที่สร้างขึ้นได้อย่างปลอดภัย (แต่ฉันหวังว่ามันจะไม่สร้างคำเตือน)
เทรเวอร์บอยด์สมิ ธ

1
@JohanE คุณกำลังบอกฉัน แต่เหตุผลที่แท้จริงว่าทำไมผมโพสต์ความคิดเห็นของฉันเป็นเพราะคำตอบนี้ได้พยายามที่จะแนะนำให้เราไป"ขอบคุณ"lost+foundสำหรับ วิธีนี้ทำให้รู้สึกเฮฮาเกินกว่าที่จะเป็นจริง (ฉันนั่งที่นี่พร้อมกับรอยยิ้มกว้าง) สำหรับความน่าขันสองสามครั้งเมื่อเรารู้สึกขอบคุณที่มันไม่สามารถแข่งขันกับสิ่งที่เราต้องการจะสามารถ"Begone!" คาถานี้น่ารำคาญ Lo + สำหรับสิ่ง
ไวยากรณ์

36

จาก "ลำดับชั้นของระบบไฟล์ Linux" พบส่วน/ สูญหาย + พบ " :

ตามที่อธิบายไว้ก่อนหน้านี้ในระหว่างภาพรวมของ FSSTND, Linux ควรผ่านการปิดระบบที่เหมาะสมเสมอ บางครั้งระบบของคุณอาจล้มเหลวหรือไฟฟ้าดับอาจทำให้เครื่องไม่ทำงาน ไม่ว่าจะด้วยวิธีใดในการบู๊ตครั้งถัดไปการตรวจสอบระบบไฟล์ที่มีความยาวโดยใช้ fsck จะเสร็จสิ้น Fsck จะเข้าสู่ระบบและพยายามกู้คืนไฟล์ที่เสียหายที่พบ ผลลัพธ์ของการดำเนินการกู้คืนนี้จะถูกวางไว้ในไดเรกทอรีนี้ ไฟล์ที่กู้คืนมานั้นไม่น่าจะเสร็จสมบูรณ์หรือมีเหตุผล แต่มีโอกาสที่จะกู้คืนบางสิ่งที่คุ้มค่า แต่ละพาร์ติชั่นมีไดเรกทอรีที่หายไป + ของตัวเอง หากคุณพบไฟล์ในนั้นให้ลองย้ายไฟล์เหล่านั้นกลับไปที่ตำแหน่งเดิม หากคุณพบสิ่งที่ต้องการลิงก์สัญลักษณ์ที่เสียหายไปที่ 'file' คุณจะต้องติดตั้งไฟล์ / s ใหม่จาก RPM ที่เกี่ยวข้อง เนื่องจากระบบไฟล์ของคุณได้รับความเสียหายอย่างรุนแรงจนไฟล์ถูกทำให้เสียหายจนเกินกว่าจะจดจำได้ ด้านล่างเป็นตัวอย่างของไดเรกทอรี a / lost + found อย่างที่คุณเห็นไฟล์ส่วนใหญ่ที่อยู่ในนั้นเป็นซ็อกเก็ตจริง ในส่วนที่เหลือของไฟล์อื่น ๆ พวกเขาพบว่าไฟล์ระบบเสียหายและไฟล์ส่วนบุคคล ไฟล์เหล่านี้ไม่สามารถกู้คืนได้

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