Premiär! Fyndchans i SweClockers Månadens Drop

Mapp har inte samma storlek som innehållet

Permalänk
Medlem

Mapp har inte samma storlek som innehållet

Hej!

Jag är helt grön på Linux/Ubuntu och det känns som att jag sökt igenom hela internet utan att hitta svar på min fråga.

Jag kör Ubuntu 18.04.3 LTS. Jag har ungefär 10 mappar som jag vill veta den exakta storleken på i byte (inte storleken på disken, utan den faktiska storleken).

Jag använder

du -b --apparent-size

Det jag insett i jakten på detta är att om jag kollar storleken på en mapp, är den alltid större än summan av filerna i mappen. För att ta ett enkelt exempel:

Jag skapar en tom mapp. Den är 0 byte. Jag skapar en tom textfil i mappen. Textilen är 2 byte. Mappen är nu 146 byte.

Vad beror detta på? Kan jag på något sätt få veta den exakta storleken på innehållet i en mapp? Problemet är att mapparna jag ska kolla har innehåller tusentals andra mappar/filer, så det är inte rimligt att gå igenom varje mapp manuellt.

En av de verkliga mapparna jag vill undersöka innehåller 4414 filer (inga ytterligare mappar):

Mappens storlek: 4 811 983 154 byte
Filernas sammanlagda storlek: 4 811 082 034 byte

Kollar jag samma mapp i Windows (högerklick > Egenskaper) rapporteras "Storlek" som den exakta summan av hela mappens innehåll, alltså den andra siffran ovan.

MVH
Andreas

Permalänk
Medlem

@Ande: Det kan bero på klusterstorlek på disken. Hade textfilen varit 4 byte hade det ändå visat som 146 byte.
Är filen 147 bytes så allokeras 2 kluster a 146 (om det nu är klusterstorleken) om du är med mig och jag inte är helt ute och cyklar?

Här står lite mer

https://unix.stackexchange.com/questions/14409/difference-bet...

Visa signatur

Mac Mini M2 Pro
5K

Permalänk
Medlem
Skrivet av Dockland:

@Ande: Det kan bero på klusterstorlek på disken. Hade textfilen varit 4 byte hade det ändå visat som 146 byte.
Är filen 147 bytes så allokeras 2 kluster a 146 (om det nu är klusterstorleken) om du är med mig och jag inte är helt ute och cyklar?

Här står lite mer

https://unix.stackexchange.com/questions/14409/difference-bet...

Tack för ditt svar!

Jag har tänkt på det också, men klusterstorleken är 512 byte på den aktuella disken så det borde inte vara det som är problemet.

Oavsett, finns det något sätt att få fram den exakta storleken på innehållet i en mapp?

Skickades från m.sweclockers.com

Permalänk
Medlem

Informationen om filer tar upp plats i en mapp.
Så de där 146 bytes du ser för en tom fil är antagligen sådant som filnamn, datum filen är skapad, m.m.

Kommandot du inkluderar inte bara storleken på de ingående filerna, utan även storleken på själva mapparna när du har en mapp som argument.

Permalänk
Medlem
Skrivet av Erik_T:

Informationen om filer tar upp plats i en mapp.
Så de där 146 bytes du ser för en tom fil är antagligen sådant som filnamn, datum filen är skapad, m.m.

Kommandot du inkluderar inte bara storleken på de ingående filerna, utan även storleken på själva mapparna när du har en mapp som argument.

Det förklarar ju en del! Finns det något sätt att bara inkludera storleken på ingående filer?

Skickades från m.sweclockers.com

Permalänk
Medlem

mappars storlek

@Ande: vi kan göra den här demonstrationen:
--
stefan@asus:/tmp$ mkdir testmapp
stefan@asus:/tmp$ ls -la testmapp/
totalt 4
drwxr-xr-x 2 stefan stefan 6 sep 29 00:33 .
drwxrwxrwt 25 root root 4096 sep 29 00:33 ..
stefan@asus:/tmp$ touch testmapp/en_kortare_fil_men_med_ett_långt_namn
stefan@asus:/tmp$ ls -la testmapp/
totalt 4
drwxr-xr-x 2 stefan stefan 52 sep 29 00:33 .
drwxrwxrwt 25 root root 4096 sep 29 00:33 ..
-rw-r--r-- 1 stefan stefan 0 sep 29 00:33 en_kortare_fil_men_med_ett_långt_namn
stefan@asus:/tmp$ touch testmapp/en_file
stefan@asus:/tmp$ ls -la testmapp/
totalt 4
drwxr-xr-x 2 stefan stefan 67 sep 29 00:33 .
drwxrwxrwt 25 root root 4096 sep 29 00:33 ..
-rw-r--r-- 1 stefan stefan 0 sep 29 00:33 en_file
-rw-r--r-- 1 stefan stefan 0 sep 29 00:33 en_kortare_fil_men_med_ett_långt_namn
--

6, 52 och 67 är mappens storlek (på ett ungefär)

Var är filens namn lagrat??? Det finns inte i i:noden!
Jag tror att det är den här effekten som du har sett.

Permalänk
Medlem

meta-data om en fil

@Erik_T:
uppgifter om när en fil skapades (det finns fler tidsstämplar) sätts i i:noden.

Permalänk
Medlem

summering av filstorlekar

@Ande: jag tror att exv sum (kasta bort checksumman) och awk skulle kunna fixa biffen.

--
stefan@asus:/tmp/testmapp$ find /tmp -type f -ls|awk 'BEGIN { sum=0 } /[1-9][0-9]*.*/ { sum=sum+$7 } END { print sum }'
find: ‘/tmp/pulse-PKdhtXMmr18n’: Åtkomst nekas
find: ‘/tmp/fthv-root’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-ntp.service-Ghp2sK’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-colord.service-vTZgwZ’: Åtkomst nekas
find: ‘/tmp/systemd-private-f384b23ef007494383d8bc2c2f7aac07-upower.service-JjjLjK’: Åtkomst nekas
21857784
stefan@asus:/tmp/testmapp$
--

utan sum utan använder '-ls' flaggan till find.
Vill du summera filer i olika mappar men orkar inte skriva in dem så är
find någonstans någonstans2 -type d och skalets '$( )' operator dina vänner.