Saya akan mulai dengan contoh:
$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux 7 2008-01-15 15:17 symfile -> file
symfile
adalah symlink dari file file
Juga seperti yang saya tahu 1650
akan menjadi ukuran file file
, tetapi berapa nomor 7
yang diletakkan di bawah kolom ukuran?
EDIT: Berjalan du
:
$ du -sh symfile
0 symfile
Jadi bagaimana Anda bisa membuktikan bahwa 7 adalah ukuran symlink ?!
MEMPERBARUI:
coba ini
$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun 1 19:42 file
perhatikan bahwa ukuran juga ada di sini 0.
Sekarang:
$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun 1 19:44 sym -> file
Jadi, saya kira itu bukan hanya ukuran
symbolic-link
ls
Maythux
sumber
sumber
7
tergantung pada filesystem (dan parameter mungkin lainnya). Ini 7 pada ext4, tetapi bisa 13 pada btrfs dan 3 pada tmpfs.mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo
.Jawaban:
Tautan simbolik mengambil ruang yang diperlukan untuk menyimpan nama dan target plus beberapa byte untuk metadata lainnya.
Jadi itu ukuran symlink.
Mengenai ukuran dari
du -sh
:du
hanya melihat pada berapa banyak blok yang dialokasikan, dan karenanya dapat menunjukkan 0.stat
danls -l
lebih baik dalam menunjukkan ukuran dalam hal itu.sumber
du -sh symfile
memberi 0? -Ini adalah ukuran symlink dalam byte.
Beberapa sistem file memiliki area kecil di dalam entri direktori yang digunakan untuk awal file, yang secara signifikan mempercepat pemrosesan symlink dan pembacaan kecil (think
file
) dengan mengorbankan entri direktori yang lebih besar.Jika seluruh konten symlink masuk ke entri direktori, maka tidak ada blok data yang dialokasikan, dan
du
ukurannya menunjukkan nol. Jika symlink tidak cocok, ruang dialokasikan secara normal (jadi Anda berakhir dengan alokasi blok tunggal), yang dapat dioptimalkan oleh sistem file menggunakan penggabungan ekor (tetapi tidak ada API untukdu
mengetahui hal ini).The
ext4
filesystem melakukan optimasi ini untuk symlink saja, kriteria ditemukan dalam fungsi ext4_inode_is_fast_symlink .sumber
Ini adalah ukuran file symlink dalam bytes.
File symlink adalah file normal yang menyimpan data mengenai ke mana file itu diarahkan. Dalam ext 4 itu adalah 7 byte.
sumber
du -sh symfile
memberi 0?