줘이리의 인생적기

하드링크, 소프트링크, 특수 파일 본문

공부/시스템 프로그래밍

하드링크, 소프트링크, 특수 파일

줘이리 2021. 12. 13. 23:00
728x90

하드 링크, 소프트 링크를 알아보기 전 다시 한번 복습해야 하는 명령어이다.

 

cp 파일이름 새로운파일이름 : 파일을 새로운 파일 이름으로 바꾸고 복사

cp -rf  폴더이름/ 새로운폴더이름 : 폴더 내 모든 파일들을 새로운 폴더 이름으로 바꾸고 복사

 

rm 파일이름 : 파일 삭제

rm -rf 폴더이름 : 폴더 내 모든 파일 삭제

 


하드링크

ln 파일이름 새로운파일이름 : 똑같은 inode값을 가진 파일이 생성된다.

 

외관상으로 보기에는 일반적인 cp(copy)와 똑같아 보인다. 

ls -i (파일 inode 확인 명령어)를 사용하여 inode를 확인하면 cp로 생성된 파일만 inode값이 다른 것을 확인할 수 있다.

ls -al 로 권한정보를 확인하면 맨 앞 기호는 -로 표기된다.

또, 기존 파일을 수정하면 하드링크로 생성된 파일이 똑같이 수정된다.

기존파일을 삭제하면 동일한 물리적 공간을 가지고 있었기 때문에 하드링크된 파일은 그대로 유지된다.

 

사용하는 이유는 무엇일까?

copy는 또 다른 물리주소를 생성하기 때문에 기존파일의 크기가 2배가 된다.

하드링크는 동일한 물리주소를 가지고 있는 파일을 생성하기 때문에 별도공간이 필요없다.

 


소프트링크

ln -s 기존파일 새로운파일

 

ls -i로 확인해보면 생성된 소프트링크 파일은 inode 값이 다르다.

ls -al 로 확인하면 맨 앞 기호는 l로 표기되며, 링크된 파일이 무엇인지 알려준다 ( -> 기호)

기존 파일을 수정하면 소프트링크로 생성된 파일이 똑같이 수정된다.

기존파일을 삭제하면 소프트링크된 파일은 가리키는 물리주소를 잃어버렸기 때문에 읽지 못한다.

 

 


특수파일

특수파일에는 디바이스를 다루는 파일들이 있는데 종류로는 블록디바이스(block device), 캐릭터디바이스(character device)가 있다.

 

블록디바이스는 HDD나 CD/DVD와 같이 블록 or 섹터와 같은 정해진 단위로 데이터를 전송하는 디바이스를 뜻하며, IO 송수신 속도가 높다.

 

캐릭터 디바이스는 키보드나 마우스 등 byte 단위 데이터 전송하는 디바이스를 뜻하며, IO 송수신 속도가 낮다.

 

우분투 /dev 파일로 가서 ls -al로 확인해보면, 맨 앞 기호가 블록디바이스는 b캐릭터디바이스는 c로 표기되어 있다.