Memindahkan file ke file yang sedang dibaca


10

Ketika file dipindahkan dan file tujuan sudah ada dan saat ini sedang dibaca, apakah operasi akan berhasil? Apakah akan tergantung pada berapa lama operasi pembacaan pada file tujuan berlangsung?

Jawaban:


9

Operasi membaca akan berhasil, terlepas dari waktu yang dibutuhkan untuk menyelesaikan operasi membaca.

Mengapa dan bagaimana cara kerjanya?

Ketika operasi membaca dimulai, inode file digunakan sebagai pegangan dari mana konten file dibaca.

Saat memindahkan file lain ke file target, hasilnya akan menjadi inode baru, yang berarti konten fisik file pada disk akan ditempatkan di tempat lain dan konten asli file yang sedang dibaca tidak akan disentuh.

Satu-satunya kesamaan yang mereka miliki, adalah path / nama file mereka, sedangkan inode yang mendasari dan lokasi phyiscal pada disk berubah.

Setelah operasi pembacaan selesai (tidak ada proses lain yang masih memiliki pegangan file terbuka pada file lama dan tidak ada hardlink lain yang mereferensikan inode-nya), data lama akan dibuang.

Setelah operasi pemindahan selesai, file akan memiliki nomor indeks inode baru.

Anda dapat menampilkan file menggunakan nomor indeks inode ls -i /tmp/some-file.

Untuk alasan yang sama seperti yang dijelaskan di atas, dimungkinkan untuk menghapus file yang masih digunakan oleh suatu aplikasi, karena aplikasi yang menggunakan file tersebut hanya akan membaca dari inode (menunjuk ke konten file aktual pada disk) ketika referensi file ' dalam sistem file dihapus.


1
Anda lupa menyebutkan tautan keras: Ketika operasi membaca selesai, jika inode itu ditautkan dari entri direktori lain, maka data tidak akan dihapus (karena masih memiliki nama).
cjm

Terima kasih telah menunjukkannya, mengedit jawaban saya dan menambahkannya.
Elias Probst
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.