하드 링크
파일이 주어지면 original.txt
하드 링크는 hardlink.txt
동일한 inode를 가리키며 original.txt
삭제되더라도 계속 존재합니다.
심볼릭 링크
file 이 주어지면 original.txt
심볼릭 링크가 symlink.txt
해당 파일 이름을 가리킵니다.
질문: 어느 것이 더 빠르고 어느 것이 더 작습니까?
내 직관으로는 하드 링크가 원본 파일과 구별할 수 없기 때문에 더 빠를 것이라고 생각합니다. 그러나 모든 것은 심볼릭 링크의 속도에 달려 있습니다.
또한 어느 것이 하드 드라이브 공간을 덜 차지합니까?
다음 질문과 같은 측정 기반 답변을 보고 싶습니다.이것크기와 속도에 대해서는 간략하게 언급했지만 자세히 언급하지는 않았습니다.
답변1
심볼릭 링크는 링크된 파일의 경로를 포함하는 새 파일을 생성합니다. 따라서 대상 파일(링크가 가리키는 파일)의 경로(상대 또는 절대) 크기와 비슷한 실제 새 파일을 생성하게 됩니다.
하드 링크는 단지 디렉토리에 새 항목(즉, 디렉토리의 inode/이름 쌍을 실제로 포함하는 특수 파일)을 생성하므로 새로운 항목은 생성되지 않습니다. 특정 디렉토리가 이미 "가득 차 있어" inode/이름이 - 쌍 테이블 링크 항목을 위한 공간을 확보하려면 이를 늘려야 합니다(예: 1024에서 2048KB로).
시스템이 두 개의 파일, 즉 링크와 실제 파일을 읽어야 하기 때문에 심볼릭 링크가 더 오래 걸릴 것 같습니다... 또한 링크된 파일의 일부 처리가 필요할 수 있으며(예: 경로 확인) 다른 파티션을 사용해야 할 수도 있습니다. 물리적 디스크. 하드 링크는 실제 파일만 읽습니다. 모든 하드 링크는 "동일하게 생성"되며 일단 생성되면 어떤 링크가 먼저 나오는지는 중요하지 않습니다(어느 링크가 "소스"이고 어느 것이 "대상"인지).
답변2
심볼릭 링크는 어느 정도 간접적인 효과를 추가하므로 하드 링크보다 느리게 열리지만 일반적인 사용 사례에서는 큰 차이를 만들기에는 충분하지 않을 수 있습니다.
심볼릭 링크의 디스크 크기는 파일 시스템 구현에 따라 다릅니다. "빠른 심볼릭 링크"를 사용하여 이름 저장을 최적화하는 최신 파일 시스템과 크기가 같거나, 특히 연결된 경로 이름이 너무 길어 파일 데이터 구조에 맞지 않는 경우 약간 더 크다고 가정합니다.
일단 열리면 기호 링크를 사용하든 하드 링크를 사용하든 읽기/쓰기 작업에 영향을 주지 않습니다.
편집: 심볼릭 링크는 링크된 파일의 경로를 어딘가에 저장해야 합니다. 처음에는 이 작업이 데이터 블록에서 수행되었습니다. 나중에 대부분의 파일 시스템은 경로가 파일 데이터 구조 자체에 저장되어 읽기 공간과 디스크 공간을 절약하는 빠른 기호 링크를 구현했습니다.