Jak linux obsługuje polecenie ruchu pod maską?
Powiedzmy, że przeprowadzam się do domu, reż
/home/me
i przenoszę to do innego katalogu
/home/foo/me
Jak me
zmieniane są wszystkie ścieżki plików i katalogów ? Wiem, że moja Desktop
reż mocy me
jest teraz /home/foo/me/Desktop
, jak również Documents
/home/foo/me/Documents
, ale nie system plików wyraźnie aktualizować każdą ścieżkę mocy me
, aby odzwierciedlać zmiany? To nie brzmi bardzo wydajnie i prawdopodobnie nie jest tak.
Gdzie mogę uzyskać więcej informacji na ten temat?
filesystem
Jeff
źródło
źródło
Odpowiedzi:
Aby zrozumieć, w jaki sposób przenosi foldery, może być konieczne zrozumienie systemu plików w systemie Linux. Wszystkie pliki i foldery są przechowywane jako część struktury danych zwanej „i- węzłem ”. Każdy plik ma numer i-węzła, podobnie jak foldery.
Aby wyświetlić i-węzeł folderu, użyj polecenia
ls -ial foldername
. Pierwsza kolumna pokazuje numer i-węzła pliku. Dla każdego folderu istnieją dwie unikalne nazwy.
i..
, odpowiednio, katalog własny i katalog macierzysty.Możesz spróbować przeprowadzić eksperyment, aby przenieść katalog (powiedzmy / home / me / source) z podkatalogami i plikami do innego katalogu (np. / Home / me / somewhere / else). Numer i-węzła / home / me / source i cała jego zawartość pozostają takie same przed i po przeprowadzce. Jedyną różnicą jest numer i-węzła
..
, który pierwotnie dzieli numer i-węzła / home / me, a teraz staje się numerem i-węzła / home / me / gdzieś / jeszcze. Mówiąc prosto, Linux aktualizuje link do źródła katalogu, a następnie jest wykonywany.Zawartość dysku twardego i tak nie jest modyfikowana, tylko indeks i-węzła jest aktualizowany po przeniesieniu folderu. Nie dzieje się tak oczywiście w przypadku przeniesienia folderu do innej fizycznej lokalizacji.
źródło
Jeśli interesuje Cię sposób działania takich programów
mv
i programówcp
, pamiętaj, że są to programy typu open source i możesz uzyskać najdokładniejsze wyjaśnienie, czytając kod. Tutaj znajdują się linki do wszystkich podstawowych narzędzi. W szczególności mv można znaleźć tutajźródło
you can get the most accurate explanation by reading through the code.
Pozwolę sobie być innego zdania; Przez długi czas nie miałem absolutnie żadnego doświadczenia z C i nawet teraz nie lubię tego. Ponadto kod źródłowy jest często optymalizowany i zawiera więcej przypadków krawędzi niż jest to konieczne. Wyjaśnienie symboliczne często pomaga więcej.