Có bao nhiêu tệp trong một thư mục là quá nhiều? [đóng cửa]


8

Nhiều năm trước tôi mơ hồ nhớ lại rằng Finder trong Mac OS X sẽ bắt đầu gặp sự cố nếu một thư mục chứa 2.000 - 3.000 mục trở lên.

Apple doc nói rằng hệ thống tệp HFS Plus có giới hạn lý thuyết là 2 tỷ tệp cho mỗi thư mục tất cả các phiên bản Mac OS X.

Giới hạn thực tế là gì?

Sẽ có 10.000 ảnh trong một thư mục có vấn đề?


2
Trong 10.6 mà tôi vẫn sử dụng tại nơi làm việc. vấn đề 2000-3000 vẫn tồn tại. Tôi chưa có cơ hội sử dụng loại khối lượng tệp này trên các phiên bản sau. Nhưng tôi nghi ngờ nếu các tài liệu vẫn nói điều tương tự thì giới hạn tương tự có thể là một vấn đề. Tôi nên nói thêm rằng tôi chưa bao giờ gặp sự cố 2000-3000 trên ổ đĩa cục bộ. Nhưng chỉ trên một ổ đĩa mạng.
markhunte

1
Tôi không biết chính xác giới hạn được rút ra ở đâu, nhưng hàng triệu tệp chắc chắn sẽ đặt bạn vào một vấn đề rất lớn (chúc may mắn xóa một thư mục như vậy ngay cả với rm -rf).
Ohad Schneider

Trong các phiên bản đầu tiên của macOS X 10.6, ít nhất bạn sẽ gặp phải các vấn đề về hiệu suất khi bạn đặt một lượng "lớn", 2k đến 3k, số lượng tệp trong thư mục máy tính để bàn của bạn. Một cái gì đó để làm với việc vẽ tất cả các biểu tượng trên máy tính để bàn. Tôi đã không nghe về một vấn đề với các thư mục khác.
lịch sử

Tôi sẽ giữ điều này ở lại. Nếu chúng tôi muốn có nhiều câu trả lời hơn, chúng tôi sẽ muốn giải thích loại thời gian / yêu cầu nào khiến cho việc chờ đợi trở nên "thực tế" - câu trả lời về việc tạo 10.000 tệp cho thấy trên hầu hết các hệ thống, chúng tôi sẽ hết kiên nhẫn để xem các tệp trong Finder trước hệ thống chậm lại hoặc không thể xử lý các tập tin.
bmike

@bmike Tôi đồng ý với bạn ngoại trừ Hệ thống tệp Apple (APFS) mới thay thế HFS + đặt một vòng quay mới về chủ đề này. Có lẽ tôi nên đăng một Câu hỏi mới trên APFS nếu chưa tồn tại?
Basil Bourque

Câu trả lời:


3

Có vẻ như khoảng 10.000 là an toàn. Tuy nhiên, tôi đã thấy rằng nếu bạn đi cao hơn nhiều như 50.000 Finder sẽ không bao giờ liệt kê các tệp trong thư mục khi bạn cố duyệt nó. Tôi nghi ngờ đây là lý do tại sao nhiều phần mềm khôi phục dữ liệu sẽ tạo một thư mục mới cứ sau 10.000 tệp nếu bạn đang thực hiện khắc tệp trong RAW.


7

Bạn có thể dễ dàng thử điều này bằng cách chạy như sau trong Terminal

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

để tạo một thư mục chứa 10.000 tệp với mỗi tệp 16kB (thay thế 16 trong dòng thứ ba bằng một số khác cho các tệp có kích thước khác nhau).


1
Một từ cuối cảnh báo: Đừng không làm điều đó trong thư mục chính của bạn trừ khi bạn muốn phát triển danh tiếng của bạn với quản trị hệ thống tại địa phương. Tùy thuộc vào công cụ sao lưu mà anh ta chọn, anh ta có thể không thích các hiệu ứng của công cụ của mình khi cố lưu trữ thử nghiệm quý giá của bạn. Các thử nghiệm như thế này được giới hạn tốt nhất cho phương tiện truyền thông không phải là một phần của kế hoạch dự phòng. /tmpsẽ là một lựa chọn tốt hơn ~/.
Tatjana Heuser

@TatjanaHeuser Không chắc chắn sự quan tâm của bạn đến chủ đề này đến từ đâu, nhưng trên macOS, người dùng thường quản trị viên cục bộ (ngay cả khi họ có thể không biết về điều đó) và /tmplà một liên kết tượng trưng /private/tmptheo mặc định nằm trên phân vùng chính (chỉ) .
nohillside

Đúng cho máy Mac để bàn - và nó không thay đổi vấn đề sao lưu. Ngay cả trên MacOS, vẫn /tmpbị xóa giữa các lần khởi động lại. (Không giống như /var/tmp). # alt.follkore.computers sang một bên: Tôi đã biết các quản trị viên để nguyền rủa người dùng tò mò đã tạo một tệp nhỏ có lỗ lớn để lseekthử khi số lượng băng cho bản sao lưu của họ vượt quá khả năng của hệ thống tệp được sao lưu ...
Tatjana Heuser

@TatjanaHeuser Tôi đã quay lại từ các chuyến đi chụp ảnh và đã tải lên hàng trăm tệp RAW trong khoảng từ 30 đến 40 GB cho máy Mac của mình. TimeMachine đã xử lý vấn đề đó mà không có bất kỳ vấn đề nào :-)
nohillside

3

Trả lời xem xét một ví dụ thực tế: Hiện tại tôi có 326.000 tệp trong một thư mục, được tạo bởi một ứng dụng tải bit từ máy chủ. Các tệp này là các tệp XML được nén và ứng dụng của tôi trích xuất dữ liệu XML từ nó và lưu trữ nó trên cơ sở dữ liệu cục bộ.

Ứng dụng chạy từ dòng lệnh. Mọi thứ hoạt động tốt mà không có bất kỳ vấn đề nhưng rm * hoặc ls *không hoạt động do sự mở rộng của các ký tự đại diện (thông báo lỗi Argument list too long). Vì các tệp được lưu trữ trong một thư mục tạm thời, tôi chỉ có thể xóa thư mục sau khi xử lý các tệp.

Tôi đã không cố gắng để mở thư mục với Finder, mặc dù. Tôi nghi ngờ rằng có thể rất chậm nếu có thể.


1
Trường hợp sử dụng tương tự ở đây, tôi đã tải xuống hơn 290.000 tệp vào một thư mục từ một trang web tôi đang lưu trữ ... và đã phạm sai lầm khi cố mở nó trong Finder. Sau khi để nó quay trong 20 phút, tôi buộc khởi động lại Finder, sau đó đóng thư mục đó và làm mọi thứ khác trong Terminal (rất nhiều find | xargs!)
ge Muffguy

3

Có một số giới hạn để xem xét đã bị chạm vào bởi một số ý kiến:

  • độ dài đối số và mở rộng shell - một đơn giản echo *sẽ bảo lãnh nếu độ dài của tên tệp được tạo thành dấu hoa thị mở rộng thành các lần truy cập theo giới hạn đó. Nếu chạy vào bẫy này, thường findsẽ là bạn của bạn. find . -depth 1 -type f | exec echo {} \; sẽ là một sự thay thế làm việc cho những người vô tội echo *được đề cập ở trên, chỉ giới hạn ở các tệp liệt kê. ( echođược thay thế bằng hành động bạn chọn)

  • mỗi giới hạn chương trình đối với kích thước của cấu trúc dữ liệu nội bộ được sử dụng để chứa nội dung thư mục (công cụ tìm, tất cả các loại công cụ cố gắng đọc danh sách thư mục).

  • thư mục tra cứu kích thước bộ đệm. Mặc dù hệ thống tệp có thể chứa 2,1 tỷ tệp trong cấu trúc trên đĩa của thư mục, nhưng sẽ không dễ chịu khi làm việc với số đó và bạn nên giới thiệu một số chiến lược sắp xếp tệp vào thư mục con nếu bạn đang kinh doanh các cấu trúc có kích thước đó. (Gợi ý: những người thiết kế cấu trúc bộ đệm web đã phải đối phó với điều đó - xem Maltzahn / Richardson, Giảm Đĩa I / O của Bộ đệm Máy chủ Web Proxy, Usenix 1999 .

Để tăng tốc truy cập vào các cấu trúc đĩa được sử dụng thường xuyên, các hệ thống tệp đang sử dụng bộ nhớ cache (bộ nhớ) và kích thước của các bộ đệm này bị giới hạn. Đây là nơi mà hình phạt bất ngờ cho các giám đốc có cấu trúc lớn và kém tối ưu bắt đầu đánh. Tùy thuộc vào tần suất và cường độ truy cập vào các thư mục này, hình phạt có thể là đáng kể.

Bài viết năm 2015 của Tsai và cộng sự, Làm thế nào để có được nhiều giá trị hơn từ bộ đệm thư mục hệ thống tệp của bạn có thể là một trong những giới thiệu dễ dàng hơn về chủ đề này.


2

Apple có một tài liệu hỗ trợ liên quan đến điều đó:

Số lượng tệp (hoặc tệp và thư mục) tối đa trong một thư mục (tất cả các phiên bản Mac OS X)

Lên tới 2,1 tỷ (2)


Vâng, thực sự, tôi đã bao gồm liên kết đó và thực tế trong câu hỏi của tôi (đoạn 2). Tôi đang hỏi về giới hạn thực tế trong thế giới thực.
Basil Bourque

2
Cảm ơn vì điều này, tôi đã có một tiếng cười vui vẻ. Hãy thử có các tệp 4M trong một thư mục và cho tôi biết nó hoạt động như thế nào (gợi ý - bạn không thể xem nó, không thể ls, không thể find, không thể xóa nó và vv).
Ohad Schneider
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.