리눅스는 어떻게 이동 명령을 처리합니까?
집에 이사를한다고 가정 해 봅시다
/home/me
나는 이것을 다른 디렉토리로 옮긴다.
/home/foo/me
모든 파일 및 디렉토리 경로는 어떻게 me
변경됩니까? 나는 내 Desktop
디렉토리 me
가 지금 /home/foo/me/Desktop
뿐만 아니라 Documents
/home/foo/me/Documents
파일 시스템 me
이 변경 사항을 반영하기 위해 모든 경로를 명시 적으로 업데이트 하는지 알고 있습니까? 그것은 매우 효율적으로 들리지 않으며 아마도 이것이 아닐 것입니다.
이에 대한 자세한 정보는 어디서 얻을 수 있습니까?
답변
폴더 이동 방법을 이해하려면 Linux에서 파일 시스템에 대해 약간의 이해가 필요할 수 있습니다. 모든 파일과 폴더는 ” inode ” 라는 데이터 구조의 일부로 저장됩니다 . 각 파일에는 inode 번호가 있으며 폴더도 있습니다.
폴더의 inode를 보려면 명령을 사용하십시오 ls -ial foldername
. 첫 번째 열은 파일의 inode 번호를 보여줍니다. 각 폴더에 대해 두 개의 고유 한 이름이 있습니다 .
및 ..
제품에 대한 각각의 자신의 디렉토리 및 상위 디렉토리를 나타내는이.
하위 디렉토리 및 파일이있는 디렉토리 (예 : / home / me / source)를 다른 디렉토리 (예 : / home / me / somewhere / else)로 이동하는 실험을 시도 할 수 있습니다. / home / me / source의 inode 수와 모든 내용은 이동 전후에 동일하게 유지됩니다. 유일한 차이는 inode 수입니다 ..
. 원래 inode 수는 / home / me이며 이제 inode 수는 / home / me / somewhere / else가됩니다. 간단히 말해서, 리눅스는 디렉토리 소스에 대한 링크를 업데이트하면 완료됩니다.
하드 디스크의 내용은 어쨌든 수정되지 않으며 폴더를 이동할 때 inode 색인 만 업데이트됩니다. 물론 폴더를 다른 실제 위치로 이동하는 경우에는 해당되지 않습니다.