Pytanie:
Ile plików w folderze to za dużo?
Basil Bourque
2013-12-14 11:01:09 UTC
view on stackexchange narkive permalink

Wiele lat temu niejasno przypominam sobie, że Finder w Mac OS X zacząłby mieć problemy, gdyby folder zawierał 2000-3000 lub więcej elementów.

Dokument Apple mówi, że System plików HFS Plus ma teoretyczny limit 2 miliardów plików na folder we wszystkich wersjach Mac OS X.

Jaki jest praktyczny limit?

Będzie mieć 10 000 zdjęć w folderze to problem?

W 10.6, którego nadal używam w pracy. problem 2000-3000 nadal istnieje. Nie miałem okazji używać takiej masy plików w późniejszych wersjach. Ale podejrzewam, że jeśli doktorzy nadal mówią to samo, to ten sam limit może być problemem. Powinienem dodać, że nigdy nie miałem problemu 2000-3000 na dysku lokalnym. Ale tylko przez dysk sieciowy.
Nie wiem dokładnie, gdzie jest narysowany limit, ale miliony plików z pewnością postawią cię w bardzo dużym problemie (powodzenia w usuwaniu takiego folderu nawet przy pomocy `rm -rf`).
We wczesnych wersjach systemu macOS X 10.6 przynajmniej wystąpiły problemy z wydajnością po umieszczeniu „dużej” (od 2 do 3 KB) ilości plików w folderze na pulpicie.Coś związanego z rysowaniem wszystkich ikon na pulpicie.Nie słyszałem o problemie z innymi folderami.
Zamierzam to odłożyć.Jeśli chcemy uzyskać więcej odpowiedzi, będziemy chcieli wyjaśnić, jaki rodzaj czasu / wymagań sprawia, że oczekiwanie jest „praktyczne” - odpowiedź dotycząca tworzenia 10 000 plików pokazuje, że w większości systemów zabraknie nam cierpliwości do przeglądania plików w Finderze przedsystem zwalnia lub nie może obsłużyć plików.
@bmike Zgadzam się z tobą, z wyjątkiem tego, że nowy [* Apple File System (APFS) *] (https://en.m.wikipedia.org/wiki/Apple_File_System), który zastępuje HFS +, wprowadza nowy spin w tym temacie.Może powinienem opublikować nowe pytanie dotyczące APFS, jeśli jeszcze nie istnieje?
Tak, @BasilBourque - moglibyśmy użyć nowego, bardzo konkretnego pytania - być może łącząc się tutaj, aby wyjaśnić, gdzie katalogujemy ograniczenia HFS +.Z pewnością wyraźnie określę, jakie są twoje ograniczenia.Oczekiwanie 60 sekund na renderowanie określonego widoku wyszukiwarki, co powoduje 10% użycie procesora podczas sortowania według nazwy lub czegokolwiek, co uważasz za „praktyczne” lub „ograniczające”
Pięć odpowiedzi:
nohillside
2013-12-14 18:13:17 UTC
view on stackexchange narkive permalink

Możesz łatwo to wypróbować samodzielnie, uruchamiając następujące polecenie w Terminalu

  mkdir ~ / tcd ~ / tdd if = / dev / random of = test bs = 1024 count = 16for i in { 1..10000}; wykonaj test cp. $ i; gotowe  

, aby utworzyć folder zawierający 10 000 plików po 16 KB każdy (zastąp 16 w trzeciej linii inną liczbą dla plików o różnych rozmiarach).

Ostatnie słowo ostrzeżenia: * nie * rób tego w swoim katalogu domowym, chyba że chcesz zwiększyć swoją sławę u administratora lokalnego systemu.W zależności od wybranego narzędzia do tworzenia kopii zapasowych, może nie podobać się efektom jego narzędzia próbującego zarchiwizować cenny eksperyment.Takie eksperymenty najlepiej ograniczać się do nośników, które nie są częścią planu tworzenia kopii zapasowych.`/ tmp` byłoby lepszym wyborem niż` ~ / `.
@TatjanaHeuser Nie jestem pewien, skąd bierze się Twoje zainteresowanie tym tematem, ale w systemie MacOS użytkownik zazwyczaj * jest * administratorem lokalnym (nawet jeśli może nie być tego świadomy), a `/ tmp` jest dowiązaniem symbolicznym do` / private / tmp`który domyślnie znajduje się na głównej (jedynej) partycji.
Prawda dla stacjonarnych komputerów Mac - i nie zmienia problemu z kopią zapasową.Nawet na MacOS, `/ tmp` jest usuwane między ponownymi uruchomieniami.(W przeciwieństwie do „/ var / tmp”).# alt.follkore.com komputery na bok: Znam administratorów, którzy przeklinali ciekawskiego użytkownika, który utworzył jeden mały plik z dużą dziurą, aby dać `lseek` szansę, gdy liczba taśm do ich kopii zapasowych przekroczyła pojemność systemu plikówtworzenie kopii zapasowej ...
@TatjanaHeuser Wróciłem z wycieczek fotograficznych i wgrałem setki plików RAW o pojemności od 30 do 40 GB każdy na mojego Maca.TimeMachine poradził sobie z tym bez żadnych problemów :-)
Rafael Santos
2017-06-12 01:30:37 UTC
view on stackexchange narkive permalink

Odpowiadając na praktyczny przykład: mam teraz 326 000 plików w folderze utworzonym przez aplikację, która pobiera bity z serwera.Pliki są spakowanymi plikami XML, a moja aplikacja wyodrębnia z nich dane XML i zapisuje je w lokalnej bazie danych.

Aplikacja jest uruchamiana z wiersza poleceń.Wszystko działa dobrze bez problemu but rm * lub ls * nie działa z powodu rozszerzenia symbolu wieloznacznego (komunikat o błędzie Lista argumentów za długa ).Ponieważ pliki są przechowywane w folderze tymczasowym, mogę po prostu usunąć folder po przetworzeniu plików.

Jednak nie próbowałem otworzyć folderu za pomocą Findera.Podejrzewam, że może to być bardzo powolne, jeśli to w ogóle możliwe.

Ten sam przypadek użycia - pobrałem ponad 290 000 plików do katalogu z witryny, którą archiwizowałem ... i popełniłem błąd, próbując otworzyć go w Finderze.Po pozostawieniu go w ruchu przez około 20 minut wymusiłem ponowne uruchomienie Findera, a następnie zamknąłem ten folder i zrobiłem wszystko inne w terminalu (dużo `find | xargs`!)
Jared Palmer
2017-02-23 07:09:57 UTC
view on stackexchange narkive permalink

Wydaje się, że około 10 000 jest bezpiecznych.Jednak odkryłem, że jeśli przejdziesz znacznie wyżej, na przykład 50 000, Finder nigdy nawet nie wyświetli listy plików w katalogu, gdy spróbujesz go przeglądać.Podejrzewam, że właśnie dlatego wiele programów do odzyskiwania danych tworzy nowy folder co 10 000 plików, jeśli wykonujesz rzeźbienie plików w formacie RAW.

Tatjana Heuser
2019-06-17 22:58:38 UTC
view on stackexchange narkive permalink

Istnieje kilka ograniczeń, które należy wziąć pod uwagę, które zostały poruszone w niektórych komentarzach:

  • długość argumentu i rozwinięcie powłoki - proste echo * wyłączy się, jeśli połączona długość nazw plików, którą gwiazdka rozszerzy do osiągnięcia tego limitu. Jeśli wpadniesz w tę sidła, często find będzie Twoim przyjacielem. znajdź. -depth 1 -typ f | exec echo {} \; byłby działającym zamiennikiem niewinnego echo * wspomnianego powyżej, ograniczonego do wyświetlania tylko plików. ( echo do zastąpienia wybraną akcją)

  • na program ogranicza rozmiar wewnętrznych struktur danych używanych do przechowywania zawartości katalogów (wyszukiwarka, wszelkiego rodzaju narzędzia próbujące odczytać listy katalogów).

  • rozmiar pamięci podręcznej wyszukiwania katalogu. Chociaż system plików może być w stanie pomieścić 2,1 miliarda plików w strukturze katalogu na dysku, praca z tą liczbą nie będzie przyjemna i byłoby dobrze, gdybyś wprowadził strategia sortowania plików do podkatalogów, jeśli masz do czynienia ze strukturami tej wielkości. (Wskazówka: osoby projektujące struktury pamięci podręcznej sieci WWW musiały sobie z tym poradzić - patrz Maltzahn / Richardson, Reducing the Disk I / O of Web Proxy Server Caches, Usenix 1999.

Aby przyspieszyć dostęp do często używanych struktur dysków, systemy plików używają pamięci podręcznej (pamięci), a rozmiar tych pamięci podręcznych jest ograniczony. W tym miejscu zaczyna uderzać nagła kara dla dużych i mniej niż optymalnych zorganizowanych reżyserów. W zależności od częstotliwości i intensywności dostępu do tych katalogów, kara może być znaczna.

Artykuł Tsai i in. z 2015 r., Jak uzyskać większą wartość z pamięci podręcznej katalogu systemu plików byłby prawdopodobnie jednym z łatwiejszych wstępów do tematu.

konqui
2013-12-14 12:58:14 UTC
view on stackexchange narkive permalink

Apple ma dokument pomocy związany z tym:

Maksymalna liczba plików (lub plików i folderów) w folderze (wszystkie wersje Mac OS X)

Do 2,1 miliarda (2)

Tak, rzeczywiście, umieściłem ten link i fakt w moim pytaniu (akapit drugi). Pytam o praktyczne * rzeczywiste * ograniczenia.
Dzięki za to, nieźle się pośmiałem.Spróbuj umieścić 4M plików w jednym folderze i daj mi znać, jak to działa (wskazówka - nie możesz go wyświetlić, nie możesz go użyć, nie możesz go znaleźć, nie możesz go usunąć i tak dalej).


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...