Bagaimana linux menangani perintah pemindahan di bawah tenda?
Katakanlah saya memindahkan dir rumah saya
/home/me
dan saya memindahkan ini ke direktori lain
/home/foo/me
Bagaimana semua jalur file dan direktori di bawah me
diubah? Saya tahu Desktop
dir saya di bawah me
sekarang /home/foo/me/Desktop
juga Documents
/home/foo/me/Documents
tetapi apakah sistem file secara eksplisit memperbarui setiap jalur di bawah me
untuk mencerminkan perubahan? Kedengarannya tidak efisien dan mungkin bukan ini.
Di mana saya bisa mendapatkan informasi lebih lanjut tentang ini?
filesystem
Jeff
sumber
sumber
Jawaban:
Untuk memahami cara memindahkan folder, Anda mungkin perlu memahami sedikit tentang sistem file di linux. Setiap file dan folder disimpan sebagai bagian dari struktur data yang disebut " inode ". Setiap file memiliki nomor inode, begitu juga folder.
Untuk melihat inode folder Anda, gunakan perintah
ls -ial foldername
. Kolom pertama menunjukkan nomor inode file. Untuk setiap folder ada dua nama unik.
dan..
, masing-masing mewakili direktori, dan direktori induk.Anda dapat mencoba melakukan percobaan untuk memindahkan direktori (misalnya, / home / me / source) dengan sub-direktori dan file ke direktori lain (mis. / Home / me / tempat / lain-lain). Nomor inode dari / home / me / source dan semua isinya tetap sama sebelum dan sesudah pindah. Satu-satunya perbedaan adalah nomor inode
..
, yang awalnya berbagi nomor inode / home / me dan sekarang menjadi nomor inode dari / home / me / tempat / lain. Dalam kata-kata sederhana, Linux memperbarui tautan ke sumber direktori dan kemudian selesai.Konten pada hard disk tidak diubah, hanya indeks inode yang diperbarui ketika folder dipindahkan. Tentu saja ini tidak terjadi jika Anda memindahkan folder ke lokasi fisik yang berbeda.
sumber
Jika Anda tertarik dengan cara program seperti
mv
dancp
bekerja, ingatlah bahwa itu open source dan Anda bisa mendapatkan penjelasan paling akurat dengan membaca kode. Di sini memiliki tautan ke semua utilitas inti. Secara khusus, Anda dapat menemukan mv di sinisumber
you can get the most accurate explanation by reading through the code.
Saya mohon untuk berbeda; Untuk waktu yang lama saya sama sekali tidak punya pengalaman dengan C, dan bahkan sekarang saya tidak suka itu. Juga, kode sumber sering dioptimalkan, dan mengandung lebih banyak kasus tepi daripada yang dibutuhkan. Penjelasan simbolis seringkali lebih membantu.