GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana rm bekerja? Apa yang rm lakukan?

Pemahaman saya adalah bahwa 'file' secara efektif hanyalah penunjuk ke lokasi memori yang sesuai dengan konten file.

Hati-hati dengan terminologi Anda. File (dan penunjuk) ada di disk, bukan di memori (RAM).

Jika Anda 'rm' sebuah file, Anda pasti harus menghapus penunjuk itu.

Ya. Apa yang terjadi sangat bergantung pada sistem file. Beberapa memiliki bitmap yang bloknya bebas/sibuk. Jadi itu harus membalik bit untuk setiap blok yang dibebaskan. Sistem file lain menggunakan metode pelacakan ruang kosong yang lebih canggih.

yang menunjukkan bahwa sebenarnya tidak ada yang ditimpa...

Benar. Anda dapat menemukan berbagai utilitas "batal hapus". Tetapi tergantung pada sistem file, ini bisa menjadi agak rumit. Tapi barang-barang yang Anda simpan bertahun-tahun yang lalu masih bisa disimpan - atau bisa ditimpa. Itu semua tergantung pada detail menit. Misalnya, lihat e2fsprogs.

Jadi, apakah menghapus pointer ke alamat memori adalah satu-satunya hal yang dilakukan rm?

Yah, itu juga harus menghapus "entri direktori" yang memberikan metadata tentang file tersebut. (Terkadang hanya menghapus byte pertama dari nama file).

Apakah data masih ada di blok yang berdekatan seperti sebelumnya?

Ya, datanya masih ada. Tapi jangan menganggap itu adalah blok yang berdekatan. File dapat dipecah-pecah di seluruh disk, dengan banyak petunjuk yang memberi tahu cara merakit ulang. Dan jika Anda menggunakan RAID, segalanya menjadi sangat rumit.


Ya. rm hanya menghapus pointer. Jika Anda memiliki banyak penunjuk ke file (tautan keras), maka hapus salah satu penunjuk tersebut dengan rm membiarkan yang lain sama sekali tidak tersentuh dan datanya masih tersedia.

Menghapus semua tautan tersebut tetap tidak menyentuh data, namun OS sekarang bebas menggunakan kembali blok yang sebelumnya disediakan untuk menyimpan data tersebut.

Perlu dicatat bahwa setiap proses yang membuka file membuat pegangan file untuknya. Ini menambah jumlah keseluruhan referensi ke file. Jika Anda menghapus semua pointer dari sistem file Anda, tetapi sistem operasi masih memiliki proses yang berjalan dengan pegangan file terbuka untuk file Anda, maka jumlah pointer tidak akan menjadi nol dan file tidak akan benar-benar dihapus. Hanya ketika pointer terakhir ditutup, sistem file akan mendaftarkan ruang disk sebagai telah dirilis, dan hanya pada saat itu OS akan bebas untuk menimpa blok yang sebelumnya disediakan untuk menyimpan data tersebut.

Anda mungkin dapat atau tidak dapat memulihkan data tersebut kapan pun di masa mendatang, bergantung pada apakah pemblokiran tersebut telah digunakan kembali atau tidak.

Kebetulan, Anda tidak memiliki jaminan bahwa data Anda berada di blok yang berdekatan sejak awal.


Linux
  1. Bagaimana Cara Kerja Awk ‘!a[$0]++’?

  2. Bagaimana Cara Kerja Sticky Bit?

  3. Apa itu Exec 3?

  1. Apa itu Makefile dan bagaimana cara kerjanya?

  2. Apa itu NGINX? Bagaimana cara kerjanya?

  3. Apa itu Server Web, dan Bagaimana Cara Kerja Server Web?

  1. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  2. Apa itu DNS dan Bagaimana Cara Kerjanya?

  3. Memindahkan File Saat Sedang Digunakan -- Bagaimana cara kerjanya?