2018년 5월 20일 일요일

ln (in linux) 리눅스에서 링크

ln 이란?

링크를 생성합니다. linux filesystem에서 링크란 inode(unix에서 파일에 대한 모든 정보를 기록하는 블록)와 파일의 이름을 연결합니다.

종류

Hard link

- inode 번호가 공유되고 이름만 다른 파일입니다.
- 파일을 생성하면 unix계열에서는 모든 파일을 hard link로 1개를 생성을 합니다. 추가로 hard link를 생성할때 ln 명령을 이용하고 추가 옵션없이 기본값이 hard link로 생성합니다. - ls 명령으로 파일목록을 보면 hard link로 생성된 파일의 경우 확인이 쉽지 않으며 원본 파일이 수정되면 같이 변경됩니다.
- 존재 모든 hard 링크가 사라지면 해당 파일이 사라지게 됩니다.
- inode를 공유하므로 같은 filesystem에서만 사용이 가능합니다.

Symbolic link

- 윈도우에서 사용하는 바로가기와 비슷합니다.
- ls 명령으로 쉽게 확인이 가능합니다.
- 원본 파일이 지워지더라도 symbolic link파일은 링크가 깨진채 존재가 가능합니다.

간단 사용법

Hard link시 

ln TARGET LINK_NAME
Symbolic link시

ln -s TARGET LINK_NAME

예제

Hard link 예제

링크걸기
sh-4.4$ echo 111 > 1.txt                                                                                
sh-4.4$ cat 1.txt                                                                                       
111                                                                                                     
sh-4.4$ ln 1.txt 2.txt                                                                                  
sh-4.4$ ls -l                                                                                           
total 12                                                                                                
-rw-r--r-- 2 23646 23646   4 May 20 06:57 1.txt                                                         
-rw-r--r-- 2 23646 23646   4 May 20 06:57 2.txt                                                         
-rw-r--r-- 1 23646 23646 978 May 20 06:56 README.txt                                                    
sh-4.4$ cat 1.txt                                                                                       
111                                                                                                     
sh-4.4$ cat 2.txt                                                                                       
111    
-rw-r--r-- 2 <= 여기 숫자는 링크가 걸린 갯수가 됩니다. 
기본적으로 생성되는 파일은 한개의 hard link가 존재하기 때문에 1이 됩니다. README.txt 참고

수정시
sh-4.4$ vi 2.txt                                                                                        
sh-4.4$ cat 2.txt                                                                                       
222111                                                                                                  
sh-4.4$ cat 1.txt                                                                                       
222111                                                                                                  
sh-4.4$ vi 1.txt                                                                                        
sh-4.4$ cat 1.txt                                                                                       
1222111                                                                                                 
sh-4.4$ cat 2.txt                                                                                       
1222111                                                                                                 
sh-4.4$ ls -la                                                                                          
total 24                                                                                                
drwxrwxrwx 1 cg    cg    4096 May 20 06:59 .                                                            
drwxrwxrwx 1 cg    cg    4096 Sep  9  2017 ..                                                           
-rw-r--r-- 1 23646 23646  207 May 20 06:56 .cg_conf                                                     
-rw-r--r-- 2 23646 23646    8 May 20 06:59 1.txt                                                        
-rw-r--r-- 2 23646 23646    8 May 20 06:59 2.txt                                                        
-rw-r--r-- 1 23646 23646  978 May 20 06:56 README.txt     
1.txt, 2.txt 모두 hard link로 연결되어 있으므로 어떤 파일을 수정해도 같이 수정이 됩니다.

Symbolic link 예제

링크걸기
sh-4.4$ ln -s 1.txt 3.txt                                                                               
sh-4.4$ ls -l                                                                                           
total 12                                                                                                
-rw-r--r-- 2 23646 23646   8 May 20 06:59 1.txt                                                         
-rw-r--r-- 2 23646 23646   8 May 20 06:59 2.txt                                                         
lrwxrwxrwx 1 23646 23646   5 May 20 07:00 3.txt -> 1.txt                                                
-rw-r--r-- 1 23646 23646 978 May 20 06:56 README.txt   

사용시
sh-4.4$ ls -l                                                                                           
total 12                                                                                                
-rw-r--r-- 2 23646 23646   8 May 20 06:59 1.txt                                                         
-rw-r--r-- 2 23646 23646   8 May 20 06:59 2.txt                                                         
lrwxrwxrwx 1 23646 23646   5 May 20 07:00 3.txt -> 1.txt                                                
-rw-r--r-- 1 23646 23646 978 May 20 06:56 README.txt                                                    
sh-4.4$ cat 3.txt                                                                                       
1222111                                                                                                 
sh-4.4$ cat 1.txt                                                                                       
1222111
hard link와 동일하게 동일하게 사용가능합니다.

























댓글 없음:

댓글 쓰기