리눅스의 ln 명령어는 파일 간에 연결 고리를 만드는 데 사용되는 핵심 도구입니다. 이 명령을 통해 특정 파일에 대한 참조를 다른 위치에 생성할 수 있어, 동일한 파일을 여러 디렉터리에서 활용하면서도 저장 공간을 절약할 수 있습니다.
동일한 파일을 여러 경로에서 사용해야 할 때, 각 디렉터리에 별도의 사본을 두지 않고 원본 파일이 있는 위치에 링크를 생성함으로써 디스크 사용량을 최적화할 수 있습니다.
명령어 형식
ln [옵션] [원본 파일 또는 디렉터리] [링크 파일 또는 디렉터리]
사용 가능한 옵션:
[-bdfinsvF] [-S 백업_접미사] [-V {번호형,기존형,단순형}]
[--help] [--version] [--]
링크 유형
파일 시스템에서는 두 가지 형태의 링크를 지원합니다:
- 하드 링크(Hard Link): 하나의 파일에 여러 이름을 부여할 수 있도록 하며, 동일한 inode를 공유합니다. 동일한 파일 시스템 내에서만 생성 가능하며, 디렉터리에는 적용할 수 없습니다.
- 심볼릭 링크(Symbolic Link): 대상 파일이나 디렉터리의 경로 정보를 담고 있는 특수한 파일입니다. 서로 다른 파일 시스템 간에도 생성이 가능하고, 존재하지 않는 파일명에도 연결할 수 있으며, 디렉터리 연결도 지원됩니다.
두 방식 모두 원본 파일을 복제하지 않으며, 매우 적은 양의 메타데이터만을 사용합니다.
주요 옵션
- -b, --backup: 기존 파일이 있을 경우 백업 수행
- -d: 슈퍼유저 권한으로 디렉터리에 하드 링크 생성 허용
- -f: 강제로 덮어쓰기
- -i: 상호작용 모드로 덮어쓸 때 확인 요청
- -n: 심볼릭 링크를 일반 디렉터리처럼 취급
- -s: 심볼릭 링크 생성
- -v: 작업 과정 자세히 출력
사용 예시
심볼릭 링크 생성 예제:
ln -s log2013.log link2013
실행 결과:
[root@localhost test]# ls -l
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln -s log2013.log link2013
[root@localhost test]# ls -l
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
하드 링크 생성 예제:
ln log2013.log ln2013
실행 결과:
[root@localhost test]# ls -l
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 1 root bin 61 11-13 06:03 log2013.log
[root@localhost test]# ln log2013.log ln2013
[root@localhost test]# ls -l
lrwxrwxrwx 1 root root 11 12-07 16:01 link2013 -> log2013.log
-rw-r--r-- 2 root bin 61 11-13 06:03 ln2013
-rw-r--r-- 2 root bin 61 11-13 06:03 log2013.log