ฉันสามารถมีไฟล์ได้กี่ไฟล์ในไดเรกทอรีเดียว


21

คำถามนี้เป็นคำถามที่เกี่ยวข้องกับคนนี้

ฉันทำงานกับแอนิเมชั่นซึ่งสร้างไฟล์จำนวนมาก (+/- 1,000,000) โดยปกติเก็บไว้ในไดเรกทอรีเดียว สำหรับ Mac Os X มีข้อผิดพลาดบางอย่างเกิดขึ้นกับไฟล์มากกว่า +/- 30,000 ไฟล์ดังนั้นฉันจึงแบ่งแอนิเมชันออกเป็นไดเรกทอรีต่าง ๆ

บน Ubuntu มีข้อ จำกัด เกี่ยวกับจำนวนไฟล์ที่สามารถเก็บไดเรกทอรีเดียวได้หรือไม่?

คำตอบ:


32

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

ฉันเพิ่งสร้าง 1 ล้านไฟล์และหนึ่งไฟล์โดยไม่มีปัญหาเพราะขีด จำกัด inode ของฉันสำหรับพาร์ติชันในบ้าน ext4 ของฉัน 50 GB (46 GiB) มีขนาดใหญ่พอ

ฉันใช้ส่วนขยายของเชลล์เพื่อสร้างไฟล์รวมกับtouchยูทิลิตี้:

mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}

สิ่งนี้จะสร้างไฟล์ 1000001 ไฟล์ที่สามารถตรวจสอบls | wc -lได้ ทำไม300000..600000ไม่300001..600000? เพราะฉันขี้เกียจเกินกว่าจะวาง 1 อันไว้ท้าย

df -i ดูเหมือนกับ:

/dev/sda6            3055616 1133635 1921981   38% /home

ตอนนี้ให้ลบไฟล์ทดสอบออก ( cd ..&&rm -f testใช้เวลานานกว่ามากดังนั้นใช้rmกับชื่อไฟล์):

rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f

และจำนวนของ inodes ที่ใช้งานลดลงทันทีหลังจากลบไฟล์:

/dev/sda6            3055616  133634 2921982    5% /home

โปรดทราบว่าแม้ว่าระบบไฟล์จะอนุญาตให้มีไฟล์จำนวนมาก แต่ก็เป็นความคิดที่น่ากลัวที่จะเก็บไฟล์ขนาดใหญ่ไว้ในไดเรกทอรีเดียว f/i/l/e/filename.extอย่างน้อยใช้ไดเรกทอรีย่อยบางคนที่มีโครงสร้างเหมือน โปรแกรมมักไม่คาดหวังว่าจะมีไฟล์จำนวนมาก


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

1
แน่นอนฉันทำได้. ฉันแค่จินตนาการถึงปัญหาก่อนที่จะไปถึงพวกเขา คุณถูกต้องเกี่ยวกับ Adobe After Effects จะเกิดปัญหาขึ้นอย่างแน่นอน แต่ไม่ต้องสงสัยเลยว่า Autodesk พวกเขาสร้างโค้ดที่น่าทึ่ง ... =) ดูเหมือนว่าใช้ Ferrari ง่ายมากที่จะผิดพลาดอย่างรวดเร็วและมีประสิทธิภาพเพราะถูกบล็อกบนพื้นดิน หวังว่าภาษาอังกฤษของฉันจะสมเหตุสมผล
H_7

1
ฉันเข้าใจมัน. Yay ชื่อเสียง 17,000 คนแน่นอน ^^
Lekensteyn

1
ก่อนที่จะลบไฟล์ลองและเปิดไดเรกทอรีนี้ใน Nautilus และดูว่าเกิดอะไรขึ้น;)
มาริโอ

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