Bir dosyayı okunmakta olan bir dosyaya taşıma


10

Bir dosya taşındığında ve hedef dosya zaten mevcut ve şu anda okunuyorsa işlem başarılı olur mu? Hedef dosyadaki okuma işleminin ne kadar sürdüğüne bağlı mı olacak?

Yanıtlar:


9

Okuma işlemini tamamlamak için geçen süreden bağımsız olarak okuma işlemi başarılı olacaktır.

Bu neden ve nasıl çalışır?

Okuma işlemi başladığında, dosyanın Inode'u dosyanın içeriğinin okunduğu bir tanıtıcı olarak kullanılır.

Başka bir dosyayı hedef dosyaya taşırken, sonuç yeni bir inode olur, bu da diskteki dosyanın fiziksel içeriğinin başka bir yere yerleştirileceği ve okunmakta olan dosyanın orijinal içeriğine dokunulmayacağı anlamına gelir.

Ortak olan tek şey yol / dosya adlarıdır, diskteki temel inode ve fiziksel konum değişir.

Okuma işlemi bittikten sonra (başka hiçbir işlemin eski dosyada hala açık bir dosya tanıtıcısı olmadığı ve inode'una referans veren başka bir hardlink olmadığı düşünüldüğünde) eski veriler atılır.

Taşıma işlemi tamamlandığında, dosyanın yeni bir inode dizin numarası olacaktır.

Dosyaları inode dizin numarasını kullanarak görüntüleyebilirsiniz ls -i /tmp/some-file.

Yukarıda açıklananla aynı nedenden dolayı, bir uygulama tarafından kullanılmakta olan dosyaları silmek mümkündür, çünkü dosyayı kullanan uygulamalar dosyaların başvurusu sırasında sadece inode'dan (diskteki gerçek dosya içeriğini işaret ederek) okuyacaktır. dosya sisteminde silinir.


1
Sabit bağlantılardan bahsetmeyi unuttunuz: Okuma işlemi tamamlandığında, bu inode başka bir dizin girişinden bağlanırsa, veriler kaldırılmaz (çünkü hala bir adı vardır).
cjm

Bunu işaret ettiğiniz için teşekkürler, cevabımı düzenledim ve ekledim.
Elias Probst
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.