ไฟล์ในโฟลเดอร์มีจำนวนเท่าใด? [ปิด]


9

หลายปีที่ผ่านมาฉันจำได้ว่าเครื่องมือค้นหาใน Mac OS X จะเริ่มมีปัญหาหากโฟลเดอร์มีรายการ 2,000 - 3,000 รายการหรือมากกว่า

Apple docกล่าวว่าระบบไฟล์HFS Plusมีข้อ จำกัด ทางทฤษฎีจำนวนไฟล์ 2 พันล้านไฟล์ต่อโฟลเดอร์ทุกเวอร์ชันของ Mac OS X

ขีด จำกัด ในทางปฏิบัติคืออะไร?

การมี 10,000 รูปในโฟลเดอร์จะเป็นปัญหาหรือไม่?


2
ใน 10.6 ซึ่งฉันยังคงใช้ที่ทำงาน ปัญหา 2000-3000 ยังคงมีอยู่ ฉันไม่ได้มีโอกาสใช้ไฟล์ประเภทนี้ในรุ่นที่ใหม่กว่า แต่ฉันสงสัยว่าเอกสารยังพูดในสิ่งเดียวกันข้อ จำกัด เดียวกันอาจเป็นปัญหา ฉันควรเพิ่มว่าฉันไม่เคยมีปัญหาของ 2000-3000 ในไดรฟ์ภายใน แต่เพียงข้ามไดรฟ์เครือข่าย
markhunte

1
ฉันไม่ทราบว่าขีด จำกัด ถูกวาดตรงไหน แต่มีไฟล์นับล้านที่จะทำให้คุณมีปัญหาอย่างมาก (โชคดีที่ลบโฟลเดอร์เช่นนี้ด้วยrm -rf)
Ohad Schneider

ในรุ่นแรก ๆ ของ macOS X 10.6 อย่างน้อยคุณจะประสบปัญหาด้านประสิทธิภาพเมื่อคุณวาง "ใหญ่", 2k ถึง 3k, จำนวนไฟล์ในโฟลเดอร์เดสก์ท็อปของคุณ มีบางอย่างเกี่ยวกับการวาดไอคอนทั้งหมดบนเดสก์ท็อป ฉันไม่ได้ยินปัญหาเกี่ยวกับโฟลเดอร์อื่น
historystamp

ฉันจะหยุดเรื่องนี้ไว้ หากเราต้องการคำตอบเพิ่มเติมเราจะอธิบายว่าการกำหนดเวลา / ความต้องการแบบใดที่ทำให้การรอ "ในทางปฏิบัติ" - คำตอบในการสร้าง 10,000 ไฟล์แสดงว่าในระบบส่วนใหญ่เราจะหมดความอดทนในการดูไฟล์ใน Finder ก่อน ระบบช้าลงหรือไม่สามารถจัดการไฟล์ได้
bmike

@bike ฉันเห็นด้วยกับคุณยกเว้นว่าApple File System (APFS) ใหม่ที่มาแทนที่ HFS + ทำให้สปินใหม่ในหัวข้อนี้ บางทีฉันควรโพสต์คำถามใหม่ใน APFS โดยเฉพาะถ้ายังไม่มี?
Basil Bourque

คำตอบ:


3

ดูเหมือนว่าประมาณ 10,000 มีความปลอดภัย อย่างไรก็ตามฉันพบว่าหากคุณไปสูงกว่าเช่น 50,000 Finder จะไม่มีรายการไฟล์ในไดเรกทอรีเมื่อคุณพยายามเรียกดู ฉันสงสัยว่านี่คือเหตุผลที่ซอฟต์แวร์กู้คืนข้อมูลจำนวนมากจะสร้างโฟลเดอร์ใหม่ทุก ๆ 10,000 ไฟล์หากคุณกำลังแกะสลักไฟล์ใน RAW


7

คุณสามารถลองด้วยตัวคุณเองได้ง่ายๆด้วยการเรียกใช้สิ่งต่อไปนี้ในเทอร์มินัล

mkdir ~/t
cd ~/t
dd if=/dev/random of=test bs=1024 count=16
for i in {1..10000}; do cp test test.$i; done

เพื่อสร้างโฟลเดอร์ที่มี 10'000 ไฟล์ด้วย 16kB ต่อไฟล์ (แทนที่ 16 ในบรรทัดที่สามด้วยหมายเลขอื่นสำหรับไฟล์ที่มีขนาดต่างกัน)


1
คำปลายเตือน: ห้ามไม่ได้ทำอย่างนั้นในสารบบที่บ้านของคุณถ้าคุณต้องการที่จะเติบโตมีชื่อเสียงของคุณกับผู้ดูแลระบบท้องถิ่นของคุณ ขึ้นอยู่กับเครื่องมือสำรองที่เขาเลือกเขาอาจไม่ชอบผลของเครื่องมือที่พยายามเก็บการทดสอบอันมีค่าของคุณ การทดลองเช่นนี้ จำกัด ไว้เฉพาะสื่อที่ไม่ได้เป็นส่วนหนึ่งของแผนสำรอง จะเป็นทางเลือกที่ดีกว่า/tmp ~/
Tatjana Heuser

@TatjanaHeuser ไม่แน่ใจว่าความสนใจของคุณในหัวข้อนี้มาจากที่ใด แต่ใน macOS ผู้ใช้มักเป็นผู้ดูแลระบบในพื้นที่ (แม้ว่าพวกเขาอาจจะไม่ทราบ/tmpก็ตาม) และเป็น symlink /private/tmpซึ่งโดยปกติแล้วจะอยู่ในพาร์ติชั่นหลัก (เท่านั้น) .
nohillside

เป็นจริงสำหรับ Mac บนเดสก์ท็อป - และไม่เปลี่ยนปัญหาการสำรองข้อมูล แม้ใน MacOS /tmpก็จะถูกล้างระหว่างการรีบูต (ไม่เหมือน/var/tmp) # alt.follkore.computers กัน: ฉันรู้จักผู้ดูแลระบบเพื่อสาปแช่งผู้ใช้ที่สร้างไฟล์เล็ก ๆ หนึ่งไฟล์ที่มีรูขนาดใหญ่เพื่อlseekลองดูเมื่อจำนวนเทปสำหรับการสำรองข้อมูลเกินความจุของระบบไฟล์ที่ถูกสำรอง ...
Tatjana Heuser

@TatjanaHeuser ฉันกลับมาจากทริปถ่ายภาพและอัปโหลดไฟล์ RAW หลายร้อยไฟล์ระหว่าง 30 ถึง 40 GB สำหรับ Mac ของฉัน TimeMachine จัดการเรื่องนี้โดยไม่มีปัญหาใด ๆ เลย :-)
nohillside

3

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

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

แต่ฉันไม่ได้พยายามเปิดโฟลเดอร์ด้วย Finder ฉันสงสัยว่าอาจช้ามากถ้าเป็นไปได้ทั้งหมด


1
กรณีการใช้งานเดียวกันที่นี่ - ฉันดาวน์โหลดไฟล์มากกว่า 290,000 ไฟล์ไปยังไดเรกทอรีจากเว็บไซต์ที่ฉันเก็บถาวร ... และทำผิดพลาดในการพยายามเปิดมันใน Finder หลังจากปล่อยให้มันหมุนไปประมาณ 20 นาทีฉันบังคับให้รีสตาร์ท Finder แล้วปิดโฟลเดอร์นั้นและทำทุกอย่างในเทอร์มินัล (มากมายfind | xargs!)
geerlingguy

3

มีข้อ จำกัด หลายประการในการพิจารณาที่ได้รับความคิดเห็นบางส่วน:

  • ความยาวของอาร์กิวเมนต์และการขยายตัวของเชลล์ - แบบง่ายecho *จะประกันหากความยาวที่ต่อกันของชื่อไฟล์ที่เครื่องหมายดอกจันขยายไปถึงการเข้าชมตามขีด จำกัด นั้น หากเจอกับดักนี้มักfindจะเป็นเพื่อนของคุณ find . -depth 1 -type f | exec echo {} \; จะเป็นการทดแทนการทำงานสำหรับผู้บริสุทธิ์ที่echo *กล่าวถึงข้างต้น จำกัด เฉพาะการแสดงรายการไฟล์เท่านั้น ( echoจะถูกแทนที่ด้วยการกระทำที่คุณเลือก)

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

  • ขนาดแคชการค้นหาไดเร็กทอรี ในขณะที่ระบบไฟล์อาจสามารถเก็บไฟล์ได้ 2.1 พันล้านไฟล์ภายในโครงสร้างบนดิสก์ของไดเรกทอรี แต่ก็ไม่น่าเป็นไปได้ที่จะทำงานกับหมายเลขนั้นและคุณควรที่จะแนะนำกลยุทธ์ในการจัดเรียงไฟล์ลงในไดเรกทอรีย่อยถ้า คุณกำลังจัดการกับโครงสร้างของขนาดนั้น (คำแนะนำ: คนเหล่านั้นออกแบบเว็บโครงสร้างแคชไม่ต้องจัดการกับที่ - ดูMaltzahn / ริชาร์ดลด Disk I / O ของ Web Proxy Server แคช, Usenix 1999

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

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


2

Apple มีเอกสารสนับสนุนที่เกี่ยวข้อง:

จำนวนไฟล์สูงสุด (หรือไฟล์และโฟลเดอร์) ในโฟลเดอร์ (เวอร์ชั่น Mac OS X ทั้งหมด)

มากถึง 2.1 พันล้าน (2)


ใช่แน่นอนฉันได้รวมลิงค์และข้อเท็จจริงไว้ในคำถามของฉัน (วรรค 2) ฉันกำลังถามเกี่ยวกับข้อ จำกัด ในโลกแห่งความเป็นจริง
Basil Bourque

2
ขอบคุณสำหรับสิ่งนี้ฉันหัวเราะได้ดี ลองมีไฟล์ 4M ในโฟลเดอร์เดียวและแจ้งให้เราทราบว่ามันเป็นอย่างไร (คำใบ้ - คุณไม่สามารถดูได้ไม่lsสามารถไม่findสามารถไม่สามารถลบได้และอื่น ๆ )
Ohad Schneider
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.