Saya telah membaca di banyak situs web yang, di Linux, tautan simbolik (tautan lunak, symlink) seperti pointer yang mereferensikan file lain, yang dapat ditemukan di mana saja (seperti pintasan Windows). Namun, ketika saya memeriksa penggunaan disk pada folder di mana ada tautan simbolis, ada ketidakcocokan antara apa yang dikatakan manajer file saya dan du
laporan apa . Namun, jika saya mengetik du -L
( -L, --dereference; dereference all symbolic links
dari halaman manual), output du -L
dan ukuran yang dilaporkan manajer file saya adalah sama .
Pertanyaan saya adalah : jika saya memiliki softlink ke file besar di, misalnya,home
partisiterpisah saya, apakah saya akan memiliki masalah?
Contoh :
/var/tmp
Folder saya sekarang kosong. Mari kita buat file:
$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total
Dan manajer file saya (Thunar, dalam hal ini) melaporkan
Ukuran: 1 item, total 163,0 kB
Baiklah. Sekarang, mari buat file yang sangat besar /tmp
dan symlink ke dalamnya:
$ 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
Semuanya baik-baik saja untuk saat ini. Tetapi jika saya membuka file manager saya:
Ukuran: 2 item, total 570,3 kB
Dan akhirnya:
$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total
Jika partisi di mana /var/tmp
terletak 1 GiB besar, dan saya membuat tautan di dalamnya ke file 1 GiB, ¿apakah hard disk saya akan mati? Saya tahu itu du
akan menghasilkan 168 dan Thunar 1 GiB, tapi saya tidak tahu mana yang benar.
sumber
Jawaban:
Tautan simbol memang mengambil ruang, tentu saja, tetapi hanya ruang yang diperlukan untuk menyimpan nama dan target ditambah beberapa byte untuk metadata lainnya. Ruang yang diambil oleh tautan simbolik tidak tergantung pada ruang yang diambil oleh target (setelah semua, target bahkan tidak diharuskan ada).
Plain
du
melaporkan ruang yang diambil oleh pohon direktori pada disk.du -L
melaporkan ruang yang akan diambil oleh pohon direktori jika semua tautan simbolik diganti oleh target mereka. Yang pertama biasanya informasi yang berguna; misalnya, itu ruang yang akan Anda pulihkan jika Anda menghapus pohon, dan itu (kurang-lebih) ruang yang Anda butuhkan untuk membuat cadangan pohon.du
pada pohon direktori menunjukkan (biasanya) sedikit lebih dari total ukuran file. Itu karena dua hal. Pertama,du
juga menghitung direktori, yang membutuhkan sedikit ruang untuk menyimpan nama file dan metadata. Kedua,du
menghitung ruang disk yang diambil oleh file, yang dapat berbeda dari ukuran file: efek yang paling umum adalah bahwa file mengambil jumlah blok integer (4kB pada instalasi Linux yang khas), sehingga file 1-byte dapat ditampilkan sebagai 4kB di du output; tetapi kompresi (seperti bentuk primitif yang disediakan oleh file jarang di hampir setiap sistem file unix) dapat membuat ukuran file lebih besar dari penggunaan disk.Dari angka yang Anda berikan, tampaknya Thunar melaporkan jumlah ukuran file di pohon direktori, mengikuti tautan simbolik . Ini sebenarnya mengatakannya dengan cara yang halus - itu mengklaim bahwa ukuran total 570,3 kB, bukan bahwa penggunaan disk adalah 570,3 kB. Apa yang sama sekali tidak terlihat dari antarmuka pengguna atau dokumentasi adalah bahwa Thunar mengikuti tautan simbolik ketika menghitung ukuran.
Mana yang “benar” adalah masalah subyektif.
du
melaporkan penggunaan disk. Thunar melaporkan ukuran total mengikuti tautan simbolis. Membuat tautan simbolis memiliki dampak yang dapat diabaikan pada penggunaan disk, tetapi menurut definisi memang mengubah total tautan simbolis-ukuran berikut yang dilaporkan Thunar.sumber
du
menunjukkan penggunaan disk, sementara Thunar menunjukkan sesuatu yang lain.Saya pikir secara default pengelola file Anda mencoba untuk mendapatkan ukuran file yang ditunjuk oleh tautan lunak, sedangkan
du
memberi Anda ukuran direktori dan tautan lunak itu sendiri tetapi bukan file yang mereka tunjuk.Untuk memperjelas,
Saya tidak yakin apakah ini yang Anda tanyakan, tetapi jika ya, maka saya yakin ini bisa menjadi jawaban untuk pertanyaan Anda.
sumber