Just tripped across a weird case of du
. Putting arguments one way gives:
$ du -s htdocs/.git/ feuerkraft/.git/ media/.git/
40564 htdocs/.git/
40740 feuerkraft/.git/
204 media/.git/
Putting them in a different order changes the size of the last directory:
$ du -s media/.git/ htdocs/.git/ feuerkraft/.git/
40696 media/.git/
40564 htdocs/.git/
248 feuerkraft/.git/
Those should all be regular directories:
$ ls -l */.git -d -i
4891918 drwxrwxr-x 1 ingo ingo 138 Mar 28 08:41 feuerkraft/.git
4892896 drwxrwxr-x 1 ingo ingo 138 Mar 28 08:44 htdocs/.git
4893874 drwxrwxr-x 1 ingo ingo 138 Mar 28 08:42 media/.git
Doing it manually gives:
$ for i in htdocs/.git/ feuerkraft/.git/ media/.git/; do du -s "${i}"; done
40564 htdocs/.git/
40740 feuerkraft/.git/
40696 media/.git/
When I copy the directory with cp -axv
the problem stays, if I copy the directory with cp -rxv
it disappears.
Digging deeper:
$ du -s feuerkraft/.git/objects/pack/pack-26b69bdec4b3fd894bf7984d23e1938b522e6d53.pack media/.git/objects/pack/pack-26b69bdec4b3fd894bf7984d23e1938b522e6d53.pack htdocs/.git/objects/pack/pack-31a80589fbb132827d19b718c07aba1aa6bb9c02.pack | wc -l
2
$ ls feuerkraft/.git/objects/pack/pack-26b69bdec4b3fd894bf7984d23e1938b522e6d53.pack media/.git/objects/pack/pack-26b69bdec4b3fd894bf7984d23e1938b522e6d53.pack htdocs/.git/objects/pack/pack-31a80589fbb132827d19b718c07aba1aa6bb9c02.pack | wc -l
3
du
list only 2 files if three are given, ls
lists 3.
Filesystem is btrfs
. Is this a bug or something with compression/copy-on-write or whatever?