du boş dizini yanlış bildiriyor


13

Bu komutları kullanıyorum:

du -sh --apparent-size ./*
du -sh ./*

her iki raporlama:

4.0K    ./Lightroom_catalog_from_win_backup
432M    ./Lightroom catalog - wine_backup

bu dizinler şunları içerir:

$ll ./"Lightroom catalog - wine_backup"
total 432M
-rwxrwx--- 1 gigi gigi 432M Mar 18  2018 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 1 gigi gigi  227 Nov 21  2015 zbackup.bat
$ll ./Lightroom_catalog_from_win_backup
total 396M
-rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 3 gigi gigi  227 Dec 17 09:35 zbackup.bat

./Lightroom_catalog_from_win_backup için neden duraporlama 4.0Kyapılıyor ve bunu doğru bir şekilde raporlamasını nasıl sağlayabilirim?

PS: diğer sistem bilgileri:

$stat --file-system $HOME
  File: "/home/gigi"
    ID: 5b052c62a5a527bb Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 720651086  Free: 155672577  Available: 119098665
Inodes: Total: 183050240  Free: 178896289

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

Şimdiye kadar verilen cevaplar üzerine inşa etmek için ne /bin/ls -li './*/Lightroom 5 Catalog Linux.lrcat'dönüyor?
doneal24

ls -li ./*/"Lightroom 5 Catalog Linux.lrcat" 36831321 -rwxrwx--- 1 gigi gigi 432M Mar 18 2018 ./Lightroom catalog - wine_backup/Lightroom 5 Catalog Linux.lrcat 36833201 -rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 ./Lightroom_catalog_from_win_backup/Lightroom 5 Catalog Linux.lrcat
adrhc

1
Bağlantı sayısı üç olan dosya dukomutun başka bir yerinde sayılmadığından, bu, yanıtlarla ilgili bir sorun oluşturur . Yani çalışma dizininizde sadece iki alt dizin var mı?
doneal24

hayır, yaklaşık 15 tane daha var
adrhc

Yanıtlar:


23

Dosyaları sabit bağlantılar ise çoğaltmak olabilir:

~ mkdir foo bar
~ dd if=/dev/urandom of=bar/file1 count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00985276 s, 106 MB/s
~ ln bar/file1 foo/file1
~ du -sh --apparent-size foo bar
1.1M    foo
4.0K    bar

Bu beklenen davranıştır. Gönderen GNU dudocs :

İki veya daha fazla sabit bağlantı aynı dosyayı gösteriyorsa, sabit bağlantılardan yalnızca biri sayılır. Dosya bağımsız değişkeni sırası hangi bağlantıların sayıldığını etkiler ve bağımsız değişken sırasını değiştirmek du çıktılarını ve girişlerini değiştirebilir.

Gerçekten tekrarlanan sabit bağlantı boyutlarına ihtiyacınız varsa, -lseçeneği deneyin :

' -l'
' --count-links'
Onlar (sert bağlantısı gibi) zaten çıktı bile tüm dosyaların Sayım boyutu.

~ du -sh --apparent-size foo bar -l
1.1M    foo
1.1M    bar

15

Bağlantı sayısı ne kadar Bildirimi 3iki dosyalar için Lightroom 5 Catalog Linux.lrcatve zbackup.batde Lightroom_catalog_from_win_backup.

Bu, bu iki dosyanın bir yerdeki diğer dosyalara (ek adlar) sabit olarak bağlandığı anlamına gelir. Bir dudizinde veya bir dosya kümesinde çalıştırdığınızda , her sabit bağlantı yalnızca bir kez sayılır.

Misal:

$ ls -l
total 41024
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file1
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file2

$ du -h file1
10.0M   file1

$ du -h file2
10.0M   file2

$ du -h .
10.0M   .

Bu davranış, yardımcı program için POSIX standardıdu tarafından açıkça zorunlu kılınmıştır :

Bir dosya işleneni altında birden çok kez oluşan ve 1'den büyük bir bağlantı sayısı olan bir dosya sayılır ve yalnızca bir giriş için yazılır.

Bazı duuygulamalarda bu davranışı devre dışı bırakmak için standart olmayan seçenekler bulunur. GNU için dubu -lseçenek ile yapılır .


3

Neredeyse kesinlikle doğru çalışıyor. dukaç kez başvurulduğuna bakılmaksızın her dosyayı yalnızca bir kez sayar. İki dizininizin aynı sabit bağlantılı dosyaları içermesi muhtemeldir.

GNU için adam sayfası duteklifler -l, --count-links(bkz bu standart optimizasyon kapatmak için man duuygulamanız bu içeriyorsa kontrol etmek). Ya da duher dizin için bir kez olmak üzere iki kez çalışırsınız .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.