4

I have 4 files that I want to include them in a .zip file.

drwxr-xr-x  7 skemelio themelis 4,0K Οκτ  18 00:21 CSharp
drwxr-xr-x 11 skemelio themelis 4,0K Οκτ  18 00:17 gnome-games
drwxr-xr-x  8 skemelio themelis 4,0K Οκτ  18 00:17 gnome-music
drwxr-xr-x  4 skemelio themelis 4,0K Οκτ  18 00:18 Test

As you can see in total their size is 16K.

After

I am creating the zip using the command bellow:

zip -r myfiles.zip *

The file was created successfully but now its size is 20M, as you can see bellow!

drwxr-xr-x  7 skemelio themelis 4,0K Οκτ  18 00:21 CSharp
drwxr-xr-x 11 skemelio themelis 4,0K Οκτ  18 00:17 gnome-games
drwxr-xr-x  8 skemelio themelis 4,0K Οκτ  18 00:17 gnome-music
-rw-rw-r--  1 skemelio themelis  20M Απρ   4 02:00 myfiles.zip
drwxr-xr-x  4 skemelio themelis 4,0K Οκτ  18 00:18 Test

What I've done wrong?

ps: Same thing (same size) happened when I try to create a .tar using tar cvf myfiles.tar *.

Stanowczo
  • 113
Themelis
  • 411
  • 1
    A individual directory always shows the 4k size when viewed with ls - what you want to use to check before is du - ie, du -sh * – ivanivan Apr 03 '19 at 23:08
  • 1
    Ok I had no idea why this happens but you are right. Why don't you make it an answer? – Themelis Apr 03 '19 at 23:10
  • 1
    FYI, 4K * 4 = 16K, not 32K. Also, in this case this is due to a misunderstanding of the size that ls reports for directories (that each directory was the exactly the same size should have been a hint that maybe ls isn't reporting what you think), but in general you should not necessarily be surprised if compression sometimes produces a larger file. Compression can't compress everything; otherwise you could repeatedly run zip on a .zip file to get increasingly smaller files. – jamesdlin Apr 04 '19 at 04:35
  • Hahaha @jamesdlin, sorry man it was late night and I saw a bunch of video tutorials. :D – Themelis Apr 04 '19 at 08:12
  • 1
    "I have 4 files..." - No, you don't. You have 4 directories which makes all the difference here. – mastov Apr 04 '19 at 08:30
  • Aren't directories files in Unix/Linux @mastov? – Themelis Apr 04 '19 at 08:47
  • 1
    @Themelis I stand corrected. They are "files", they are just not "regular files", which is important here. – mastov Apr 04 '19 at 11:01

1 Answers1

7

An individual directory always shows its own size when viewed with ls - no matter the size of its contents. What you really want to use to check before is du - ie, du -sh *.

A good explanation of what the size of a directory means is on this Q&A - What does size of a directory mean in output of 'ls -l' command?

Themelis
  • 411
ivanivan
  • 4,955
  • 6
    The size show by ls for a directory is not false, it is the size of the directory. However the size of a directory is related to the number of entries in it (possibly the largest number it every had), not the size of those entries. – icarus Apr 04 '19 at 03:58
  • So any directory takes 4K of disk space? It feels a lot! – Themelis Apr 04 '19 at 08:49
  • 1
    @Themelis - or more. It is meta-data about the directory and contents, so if your directory has lots of files or subdirectories, etc it will get larger. Key is to remember the size shown for the directory is about the meta data, not the sum of the sizes of the contents of the directory. – ivanivan Apr 04 '19 at 13:35