Przenoszenie pliku do czytanego pliku


10

Gdy plik zostanie przeniesiony, a plik docelowy już istnieje i jest obecnie odczytywany, czy operacja się powiedzie? Czy będzie to zależeć od czasu trwania operacji odczytu pliku docelowego?

Odpowiedzi:


9

Operacja odczytu zakończy się powodzeniem, niezależnie od czasu potrzebnego na zakończenie operacji odczytu.

Dlaczego i jak to działa?

Gdy rozpoczyna się operacja odczytu, i- węzeł pliku jest używany jako uchwyt, z którego odczytywana jest zawartość pliku.

Podczas przenoszenia innego pliku do pliku docelowego powstanie nowy i-węzeł, co oznacza, że ​​fizyczna zawartość pliku na dysku zostanie umieszczona gdzieś indziej, a oryginalna zawartość czytanego pliku nie zostanie zmieniona.

Jedyną wspólną cechą jest ścieżka / nazwa pliku, podczas gdy zmienia się podstawowa i-węzeł i położenie fiskalne na dysku.

Po zakończeniu operacji odczytu (pod warunkiem, że żaden inny proces nie ma otwartego uchwytu pliku na starym pliku i nie ma żadnych innych dowiązań twardych odwołujących się do jego i-węzła), stare dane zostaną odrzucone.

Po zakończeniu operacji przenoszenia plik będzie miał nowy numer indeksu i-węzłów.

Można wyświetlić numer indeksu i-węzła plików za pomocą ls -i /tmp/some-file.

Z tego samego powodu, co opisano powyżej, możliwe jest usunięcie plików, które są nadal używane przez aplikację, ponieważ aplikacje korzystające z pliku będą po prostu czytać z i-węzła (wskazując na rzeczywistą zawartość pliku na dysku), podczas gdy pliki odniesienia w systemie plików jest usuwany.


1
Zapomniałeś wspomnieć o dowiązaniach twardych: po zakończeniu operacji odczytu, jeśli ten i-węzeł jest połączony z inną pozycją katalogu, dane nie zostaną usunięte (ponieważ nadal ma nazwę).
cjm

Dziękuję za zwrócenie na to uwagi, zredagowałem moją odpowiedź i dodałem ją.
Elias Probst,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.