Czy w systemach Windows zmiana nazw plików jest funkcjonalnie podobna do ich usuwania?

9

Zgodnie z moim rozumieniem systemu plików Windows program może odczytać plik zgodnie z jego ścieżką, jeśli ta ścieżka zostanie zmieniona, to żaden program użyty do odczytu tego pliku nie będzie mógł tego zrobić. Oznaczałoby to, że dla wszystkich programów w systemie Windows, które zależą od pliku, konsekwencje usunięcia i zmiany nazwy pliku muszą być takie same.

Konkretnym przypadkiem, od którego zależy ta odpowiedź, jest system osadzony działający w systemie Windows 2000, instrukcja usługodawcy prowadzi użytkownika do usunięcia plików w folderze. Jako ostrożny użytkownik po prostu skopiowałem pliki do ścieżki o nazwie „folder_backup” i zostawiłem folder pusty.

Podczas tej operacji system zresetował się i nie mógł poprawnie funkcjonować. Tak więc wezwano usługodawcę, który napisał instrukcję. Ich diagnozą było uszkodzenie bazy danych, ponieważ równolegle istniały 2 bazy danych, wskazując na „folder_backup” jako drugą bazę danych. O ile mi wiadomo, pliki wewnątrz „D: / folder_backup” byłyby obojętne, wykluczając wyjątkowy przypadek programu, który szuka folderów zaczynających się od „folderu” lub odczytuje całą zawartość pliku „D: /”.

W jaki nieoczywisty sposób system może uzyskać dostęp do pliku o zmienionej nazwie, co w innym przypadku byłoby niemożliwe, gdyby plik został usunięty?

Tomas Zubiri
źródło
1
Czy w rzeczywistości skopiowałeś pliki (posiadając dwie kopie w pewnym momencie, a następnie usuwając oryginał), czy po prostu przeniosłeś je?
GSerg
1
Czy system działał w tym czasie, czytając te bazy danych? W systemie Windows (także Linux) możliwe jest kopiowanie plików, gdy są one otwarte (w zależności od aplikacji otwierającej pliki w określonych „trybach”). Prawdopodobnie spowodowałoby to uszkodzenie kopii, BTW.
davidbak
@davidbak Negatywny, aplikacja została zamknięta podczas zmiany nazwy plików.
Tomas Zubiri,
@GSerg Wydaje mi się, że zmieniłem nazwę folderu, a następnie pozwoliłem, aby konfiguracja aplikacji go odtworzyła.
Tomas Zubiri,
Porównaj z systemami plików Unix, w których identyfikator pliku jest liczbą całkowitą, a nazwa pliku jest tak naprawdę tylko odwzorowaniem nazw na identyfikator, a plik nie jest usuwany, dopóki nie ma żadnych nazw ani procesów nie jest otwarty. Zmiana nazwy pliku w systemie Unix dodaje nowe mapowanie nazw, a następnie usuwa starą nazwę, więc plik nie jest usuwany.
Raedwald,

Odpowiedzi:

16

Naprawdę zepsute do wyboru.

Harry Johnston
źródło
Wow, nie spodziewałem się, że istnieje tak wiele sposobów na zniszczenie czegoś przez zmianę nazwy pliku. Dzięki!
Tomas Zubiri,
@ wizzwizz4 2000 to NT
zdimension
-2

Do innego pliku można uzyskać dostęp do pliku o zmienionej nazwie.

  • Jednym ze sposobów, w jaki inny program może uzyskać dostęp do pliku o zmienionej nazwie, jest zmienna środowiskowa, która jest ustawiona na nową ścieżkę pliku przez ten sam program, który zmienił nazwę pliku. Program, który chce uzyskać dostęp do tego pliku, używa zmiennej środowiskowej dla ścieżki pliku zamiast ustalonej wewnętrznie ścieżki pliku.

  • Innym sposobem jest to, aby plik był jedynym plikiem w określonym folderze. Program, który chce użyć tego pliku, wie, że nigdy nie powinien znajdować się więcej niż jeden plik w tym konkretnym folderze, ale wie, że nazwa pliku może się zmienić, ale katalog, w którym należy, nie zmieni się. Program po prostu używa pierwszego pliku, jaki może znaleźć w tym folderze, którym zawsze powinien być ten plik. Nie jest to jednak dobra praktyka i lepiej jest mieć zmienną środowiskową.

W przeciwnym razie niektóre programy automatycznie proszą użytkownika o zlokalizowanie pliku przed kontynuowaniem wykonywania jego kodu

J03L
źródło