Sembolik bağlantılar aslında disk kullanımında bir fark yaratır mı?


21

Birçok web sitesinde, Linux'ta sembolik linklerin (yumuşak linkler, sembolik linkler), başka bir dosyaya atıfta bulunan işaretçilere benzeyen , herhangi bir yerde (Windows kısayolları gibi) okudum . Ancak, sembolik bağların bulunduğu bir klasörün disk kullanımını kontrol ettiğimde, dosya yöneticimin ne dediği ile hangi duraporlar arasında bir uyumsuzluk var . Ancak, du -L( -L, --dereference; dereference all symbolic linksman sayfasından) yazarsam, du -Ldosya yöneticimin raporladığı çıktı ve boyut aynıdır .

Sorum şu : eğer ayrı bir bölümümde büyük bir dosyaya yumuşak bir bağlantım varsahome, herhangi bir sorun yaşar mıyım?

Örnek :

Klasörüm /var/tmpşimdi düz boş. Bir dosya oluşturalım:

$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total

Ve dosya yöneticim (Thunar, bu durumda) raporları

Boyut: 1 madde, toplam 163.0 kB

Tamam. Şimdi, içinde gerçekten büyük bir dosya /tmpve ona bir link oluşturalım:

$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0   ./heavy.txt
168 .
168 total

Şimdilik her şey yolunda. Ancak dosya yöneticimi açarsam:

Boyut: 2 öğe, toplam 570,3 kB

Ve sonunda:

$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total

/var/tmpİçinde bulunan bölüm 1 GiB büyükse ve içinde 1 GiB dosyasına bir bağlantı oluşturursam, hard sabit diskim ölecek mi? Bunun du168 ve Thunar 1 GiB çıktılarını biliyorum , ama hangisinin doğru olduğunu bilmiyorum.


Bir programın örneğin Mib'de, bir diğeri MB olarak rapor etmediğinden emin misiniz?
HandyGandy

Hayır, bu bir problem değil.
astrojuanlu

Yanıtlar:


34

Tabii ki sembolik linkler yer kaplar, fakat sadece ismi ve hedefi artı diğer meta veriler için birkaç bayt depolamak için gereken odanın yerini alır. Sembolik bir bağlantının aldığı alan, hedefin aldığı alana bağlı değildir (sonuçta hedefin mevcut olması gerekmemektedir).

Düz du, diskteki bir dizin ağacı tarafından alınan alanı bildirir. du -Lboşluk bildirir olacağını tüm sembolik linkler kendi hedef tarafından değiştirildi eğer bir dizin ağacı tarafından satın alındı. İlki genellikle yararlı bilgilerdir; örneğin, ağacı silmiş olmanız durumunda kurtarmanız gereken alandır ve (yaklaşık olarak) ağacı yedeklemek için gereken alandır.

duBir dizin ağacında (genellikle) dosya boyutlarının toplamından biraz daha fazlasını gösterir. Bu iki şey yüzünden. Birincisi, dudosya adlarını ve meta verileri depolamak için biraz zaman alan dizinleri de sayar. İkincisi, dubir dosya tarafından alınan, dosya boyutundan farklı olabilen disk alanını sayar: en yaygın etki, dosyaların bir tam sayıdaki bloğu (tipik bir Linux kurulumunda 4kB) almasıdır, yani 1 baytlık bir dosya olabilir. du çıktısında 4kB olarak göster; ancak sıkıştırma ( hemen hemen her unix dosya sistemindeki seyrek dosyalar tarafından sağlanan ilkel form gibi ) dosya boyutunu disk kullanımından daha büyük yapabilir.

Verdiğiniz sayılardan, Thunar'ın dizin ağacındaki dosyaların boyutlarının toplamını, sembolik bağları izleyerek bildirdiği anlaşılıyor . Aslında bunu çok ince bir şekilde söylüyor - toplam boyutun 570,3 kB olduğunu, disk kullanımının 570,3 kB olduğunu iddia ediyor. Kullanıcı arayüzünden veya dokümantasyonundan açıkça görülmeyen şey Thunar'ın büyüklüğü hesaplarken sembolik bağları izlemesidir.

Hangisinin “doğru” olduğu öznel bir konudur. dudisk kullanımını bildirir. Thunar, sembolik bağların ardından toplam boyutu raporlar. Sembolik bir bağlantı oluşturmak, disk kullanımı üzerinde ihmal edilebilir bir etkiye sahiptir, ancak tanım gereği, Thunar'ın rapor ettiği toplam boyut-izleyen sembolik bağları değiştirir.


Sorumu düzelttim, bence şimdi çok açık, ama cevap için teşekkür ederim.
astrojuanlu

@ Juanlu001: Cevabımı buna göre güncelledim. Kısacası, dudisk kullanımını gösterirken Thunar başka bir şey gösterir.
Gilles 'SO- kötülük yapmayı bırak'

İşaretleri çözen yedekler oluştururken fark önemlidir. Bir ağacın altında, bir ağacın dışındaki konumlara çözülen birkaç sembolik bağlantınız olduğunu biliyorsanız, bunu yapmak isteyebilirsiniz, ancak bu ağacın dışındaki öğelerin geri kalanı sizin için önemli değildir.
Mel,

3

Varsayılan olarak, dosya yöneticiniz yumuşak linklerin işaret ettiği dosyaların boyutunu almaya çalışıyor, oysa dusize dizinin boyutunu ve işaret ettiği dosyaların değil, yumuşak linklerin kendilerini veriyor.

Netleşmeştirmek,

`du`    -> size of directory + size of all the softlinks  
`du -L` -> size of directory + size of all the files that the softlinks are pointing to.

İstediğinin bu olup olmadığından emin değilim, ama öyleyse, bunun sorunun cevabı olabileceğine inanıyorum.


Üzgünüm bu soruma cevap vermedi: söylediklerin zaten çözdüm. Daha yeni düzenlemiştim.
astrojuanlu
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.