Как Linux обрабатывает команду перемещения под капотом?
Скажем, я перемещаю свой домашний dir
/home/me
и я перемещаю это в другой каталог
/home/foo/me
Как находятся все файлы и пути каталогов под me
измененный? Я знаю мой Desktop
dir под me
теперь /home/foo/me/Desktop
а также Documents
/home/foo/me/Documents
но делает файловую систему, явно обновляют каждый путь под me
к отразить изменение? Это не звучит очень эффективным, и это - вероятно, не это.
Где я могу получить больше информации об этом?
Понять, как это перемещает папки, Вы, возможно, должны понять немного о файловой системе в соответствии с Linux. Каждый регистрируют, и папки хранятся как часть структуры данных, названной" inode". Каждый файл имеет inode число, папки - также.
представление To inode Вашей папки, используйте команду ls -ial foldername
. Первый столбец показывает inode количество файла. Для каждой папки существует два уникальных имени .
и ..
, представляя собственный каталог, и родительский каталог соответственно.
можно попытаться делать эксперимент для перемещения, каталог (скажите,/home/me/source) с подкаталогами и файлами к другому каталогу (например,/home/me/somewhere/else). inode количество/home/me/source и всего его содержания остается тем же прежде и после перемещения. Единственной разницей является inode количество ..
, который первоначально совместно использует inode количество/home/me и теперь становится inode количеством/home/me/somewhere/else. В простой формулировке Linux обновляет ссылку на источник каталога , и затем это сделано.
содержание на жестком диске не изменяется так или иначе, только индекс inode обновляется, когда папка перемещена. Это, конечно, не случай при перемещении папки в различное физическое местоположение.
Если Вы интересуетесь тем, как программы такой как mv
и cp
работа, помните, что они - открытый исходный код, и можно получить самое точное объяснение путем прочтения кода. Здесь имеет ссылки на все базовые утилиты. А именно, можно найти мВ здесь