Secret Poten

7.CetnOS 제6장 + 파일링크 본문

리눅스/CentOS

7.CetnOS 제6장 + 파일링크

potentail 2016. 7. 18. 10:54

오랜만에 써보는듯한 센토스 강좌군요 > < 

주말엔 씐나게 놀았기때문에 이제부터 다시 열심히 공부해야죵


사실상 리눅스로 서버를 열고할려면 기본적인 명령어나 사용방법은 숙지를 해야하기때문에

강좌는 기본적인 것들밖에없죠 ㅎㅎ..

하지만 이대로 순서대로나간후 언제쯤이 될지모르겠지만 여러 서버들을 열어서 접속해보고 할것입니다


그럼 거두절미하고 바로 시작!!





이번장은 파일링크에 관한것인데

파일링크라는것이 무엇이냐 하면 원본파일에 다른이름을 붙여서 사용하는것으로

윈도우의 바로가기와 비슷한 역할을 하신다고 생각하시면 되겠습니다


하지만 심벌릭, 하드링크는 실질적으로 다르게 운영되기 때문에

조금더 깊게 들어가실려면 Inode에 대해서도 공부를 조금하셔야합니다

(하드디스크에 대해 공부를 조금하시는게 좋습니다 ㅎㅎ)


리눅스에서 파일의 구성은

'파일명 - inode - 데이터' 로 구성이 되어있습니다

쉽게 설명하면 파일명은 겉보기로 구분하는것이고 inode값이 파일을 구분하는 진짜 값이 되는거죠

그안에 데이터가 들어있구요,, 그래서 실질적으로 파일을 식별하는것은 inode입니다


저번에 ls명령어를 제가 잠깐 소개했을때 ls -i 를통해서 inode값까지 볼수가 있다고 하였습니다 하핳

잠깐 보시게되면 파일마다 inode값이 다르죠?

그런데 잠깐?! sys 폴더와 proc 폴더의 inode값이 같습니다

이것은 같은 파일을 의미하게되죠 하핳


일단은 ls -i 로 inode값을 알수가있다! 라는것을알고 진행해보도록 하죠


먼저 하드링크에 대해서 설명하겠습니다


하드링크를 만드는 방법에는 ln명령어가 있습니다


1. ln

기능 : 하드링크 및 심벌릭링크를 만든다

형식 : ln [-옵션] (원본)파일명 (만들)파일명

옵션 : 

▷ -s : 심벌릭 링크 파일을 생성한다.


ln명령어로 심벌릭링크파일을 만드느냐 하드링크파일을 만드느냐 조금 달라지겠네요

일단은 폴더가많으면 헷갈리니 pasaswd파일을 test폴더에 복사해와서 한번 실험을 재개하도록하죠


mkdir /test

cd /test

이제 이정도는 척척 하실수 있을거라 믿습니다 ㅎㅎ


cp /etc/passwd /test


이런식으로 복사를 해왔습니다 하핳

먼저 하드링크를 만들어서 inode값을 비교해봅시다


ln passwd passwdhl

아...아닛 의사양반 inode값이 같으면 같은 파일이람서!!

예 맞습니다 하하


그럼!! 여기서 의문점 한가지!

passwdhl을 수정하면 passwd도 같이 수정이 될까?!

이건 직접 해봐야겠죠? ㅎㅎ


먼저 수정을 한번 해볼까요? vi는 여러분에게 조금 어려울수있기때문에

전 gedit을 이용하도록 하겠습니다 ( vi를 포스팅하고나면 vi를 쓰셔야합니다 !! )


gedit passwdhl

뭔가 많은데 알아보기쉽게 전부 삭제후에

passwdhl !! 이라고 텍스트 달아줍시다 ( 원하시는 문장으로 하여도됩니다 ) 


그다음엔 저장 누르시고 창을 닫아주시면됩니다


그렇다면 passwd파일도 변경이 되었는지 확인해볼까요?


gedit passwd

세상에 마상에 passwd의 파일내용도 바뀌었습니다!!

이것을통해 하드링크로 생성된 파일은 원본파일의 내용까지 공유한다..!

라는것을 짐작할수있겠네요


그렇다면 심벌릭 링크는?

직접 한번 확인해보도록하죠


ln -s passwd passwdsl

passwdsl 파일은 inode값이 다릅니다

게다가 본적도없는 passwdhl~ 파일이 생성되었네요?


이것은 passwdsl 파일이 링크를 생성할때 passwdhl도 같이 생성한것으로 크게 신경안쓰셔도 됩니다


심벌릭 링크는 윈도우에서 바로가기와 많이 비슷한데요

따지자면 게임이 설치된 폴더는 다른곳에있지만

바탕화면에 게임시작을 눌러서 설치된 폴더에 클라이언트를 구동할수있는 그런 거입니다


ls -li 를 통해서 다시 확인하죠


ls -li

보시면 알겠지만 passwdsl -> passwd 즉 passwd파일이 자신의 원본 파일이라는것을 가르키게 되죠

inode값도 원본파일과는 다르게 들어있죠


그렇다면 passwdsl 파일을 수정하면 원본파일도 수정이가능한가?

라고 생각하시게되죠

보통 일반적으로 생각하시면 inode값이 달라서 안될꺼야!! 라고생각하시는분들이 있을테고

원본파일링크니 가능할꺼야!! 라고 생각하시는 분들이 있을꺼에요

하핳 

그렇다면 직접 실험을 해보도록하죠


gedit passwdsl

자 분명히 passwdsl 파일입니다

여기서 수정을하고 원본파일로가면 어떻게 되어있을까요??


전 passwdsl !!! 로 파일을 수정하고 닫아보겠습니다


과연 원본파일은 멀쩡할까요?


cat passwd

이런 세상에!!

inode값이 다른데 파일내용이 변경됬어?!


그렇다면 passwdhl은 어떻게된거야?

네 전부 변경이 되었습니다


이로써 알수있는건 원본파일에 하드링크, 심벌릭링크 둘다 영향을 미치는것입니다

그러면 하드링크나 심벌릭링크나 아무거나 써도 될까?

라는 의문점이 드실수도 있겠지만


장점, 단점이 둘다 있기 마련이죠


그리고 제가 설명드리지 않은게 딱 하나 있습니다만 ㅎㅎ

ls -l 을 통해 나오는 값중

저 숫자는 하드링크의 갯수를 의미합니다


passwd 파일에 하드링크는 자신포함하여 2개가 있다는것을 알수가 있겠네요


호기심이 강하신분이라면

하드링크에 걸린파일에 심벌릭링크를걸고 파일을 수정하면??


혹은 심벌릭 링크에 하드링크를 걸면?

이라는 상상을 하실수 있을꺼에요


궁금하면 직접한번 해보시는것도 나쁘진 않을것같네요 ㅎㅎ


그외 궁금한점은

http://secretpoten.tistory.com/category/%EA%B3%B5%EC%A7%80%EC%82%AC%ED%95%AD

공지사항을 잘보시고 오픈채팅으로 물어봐주시면 감사하겠습니다 :D

Comments