GNU/Linux >> Belajar Linux >  >> Linux

Apa konsep membuat file dengan nol byte di Linux?

Sebuah file (kurang lebih) adalah tiga hal yang terpisah:

  • Sebuah "inode", struktur metadata yang melacak pemilik file, izin, dan daftar blok pada disk yang benar-benar berisi data.
  • Satu atau lebih entri direktori (nama file) yang mengarah ke inode tersebut
  • Blok data itu sendiri

Saat Anda membuat file kosong, Anda hanya membuat inode dan entri direktori yang menunjuk ke inode tersebut. Sama untuk file jarang (dd if=/dev/null of=sparse_file bs=10M seek=1 ).

Saat Anda membuat hardlink ke file yang sudah ada, Anda cukup membuat entri direktori tambahan yang mengarah ke inode yang sama.

Saya telah menyederhanakan banyak hal di sini, tetapi Anda mengerti.


touch akan membuat inode , dan ls -i atau stat akan menampilkan info tentang inode:

$ touch test
$ ls -i test
28971114 test
$ stat test
  File: ‘test’
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: fc01h/64513d    Inode: 28971114    Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/1000)   Gid: ( 1000/1000)
Access: 2017-03-28 17:38:07.221131925 +0200
Modify: 2017-03-28 17:38:07.221131925 +0200
Change: 2017-03-28 17:38:07.221131925 +0200
 Birth: -

Perhatikan bahwa test menggunakan 0 blok. Untuk menyimpan data yang ditampilkan, inode menggunakan beberapa byte. Byte tersebut disimpan di tabel inode. Lihatlah halaman ext2 untuk contoh struktur inode.


ls (atau juga, stat(2) panggilan sistem) memberi tahu Anda ukuran konten file. Berapa banyak ruang yang dibutuhkan sistem file untuk pembukuan bukan bagian dari itu, dan sebagai detail implementasi, itu bukan sesuatu yang harus program secara umum peduli atau bahkan tahu tentang. Membuat detail implementasi terlihat akan membuat abstraksi sistem file menjadi kurang berguna.


Linux
  1. Periksa status file di Linux dengan perintah stat

  2. Linux – Apa Cara Berbeda Untuk Mengatur Izin File Dll Di Gnu/linux?

  3. Apa tujuan dari file .bashrc di Linux?

  1. Apa batasan maksimal file yang dibuka di Linux?

  2. Hapus file di Linux menggunakan nomor inode

  3. Apa yang setara dengan perintah File Linux untuk windows?

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Memulai dengan perintah tac Linux

  3. Apa nomor inode di Linux?