캠핑과 개발

SFTP 서비스를 통해 특정 홈 디렉터리 하위에 다른 경로의 디렉터리를 제공함.

 

처음 시도는 심볼릭 링크를 통해 해결하고 했지만 상위 디렉터리로 이동되는 문제가 발생하였고

이를 해결하기 위해서는 권한 변경, ssh 설정 등을 변경해하는 절차가 필요함. 

운영중인 경우 sshd 재기동, 설정 변경에 따른 부담감이 발생

 

mount 명령어의 --bind 옵션을 통해 디렉터리 -> 디렉터리 마운트로 해결하기로 함

 

 

/SFTP_SERVICE_DIR/DATA1 경로의 자료를 serviceuser1 사용자의 홈디렉터리의 DATA1으로 서비스 하고자함 

사전에 사용자의 홈 디렉터리에 DATA1으 경로는 생성되어야 함

 

마운트

sudo mount --bind /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1

 

읽기만 사용할 경우

sudo mount --bind -o ro /SFTP_SERVICE_DIR/DATA1 /home/serviceuser1/DATA1

-o 옵션을 통해 ro 값(읽기만)을 전달

 

마운트 해제

sudo umount /home/serviceuser1/DATA1

  

 

 

'DEVELOPMENT > Linux' 카테고리의 다른 글

파일 감시를 위한 inotifywait  (0) 2020.08.20
Linux bash shell script 기본 사용법  (0) 2020.08.18
logroate 옵션  (0) 2017.11.22
특정 계정으로 쉘 실행하기  (0) 2017.11.15
CentOS7 방화멱(firewalld) 설정  (0) 2017.04.24

관련글 : 리눅스에서 만드는 심볼릭 링크


리눅스를 사용하다 보면 심볼릭 링크를 접하게 됩니다.

심볼릭 링크 검색하니 다음과 같이 정의가 되어 있네요.

컴퓨팅에서 심볼릭 링크(symbolic link) 또는 기호화된 링크는 절대 경로 또는 상대 경로의 형태로 된 다른 파일이나 디렉터리에 대한 참조를 포함하고 있는 특별한 종류의 파일이다


리눅스를 예를 들면 /usr/local/java/bin/java 라는 경로에 있는 java파일을 제일 ROOT 상단에 java라는 심볼릭 링크를 만들게 되면 ROOT 경로에 있는 java 파일을 실행하면 /user/local/java/bin/java를 실행하는 것과 같은 효과를 냅니다. 

매우 편리한 기능이죠. 


이런 기능이 윈도우에서도 존재합니다.

mklink라는 명령어로 Windows xp에서도 존재했는지는 알 수 없습니다만 windows7부터는 있네요


먼저 mklink명령어로 심볼릭 링크를 만들기 위해서는 관리자 권한으로 명령프롬프트를 실행해야 합니다.


mklink 명령어를 치니 다음과 같은 설명과 옵션이 나옵니다.

중요한건 /D 옵션을 주면 디렉터리 심볼릭 링크를 만들고 그냥 사용하게 되면 파일을 가지고 심볼릭 링크를 만든다고 되어 있습니다.


그럼 사용법은 다음과 같이 되겠네요.

예제에 사용한 디렉터리는 C:\myproject를 기준으로 설명합니다.


# 파일에 대한 심볼릭 링크 생성

사용법 : mklink [심볼릭파일명] [링크대상 파일명]

심볼릭파일명은 현재 위치가 어디냐에 따라서 상대경로 혹은 절대경로로 사용을 합니다.

메모장을 notepad는 이름으로 심볼릭 링크를 만듭니다.

notepad라는 상대경로를 지정을 했기 때문에 현재 명령어를 실행 시키는 위치에 notepad가 생성이 됩니다. 



# 디렉터리에 대한 심볼릭 링크 생성

사용법 : mklink /d  [심볼릭디렉터리] [링크대상 디렉터리]

심볼릭디렉터리는 현재 위치가 어디냐에 따라서 상대경로 혹은 절대경로로 사용을 합니다.

윈도우 폴더를 해당 명령어가 실행되는 위치에서 windws라는 심볼릭 링크를 만드는 예제입니다.


# 확인

메모장과 윈도우 폴더에 대한 심볼릭 링크를 만들었으니 제대로 되어있는지 확인 해보겠습니다.

탐색기에서 봤을 경우에는 기존에 윈도우에서 보던 바로가기와 비슷한 모양입니다.

마우스를 더블클릭을 하게 되면 파일일 경우 메모장이 실행되고 디렉터리일 경우 윈도우 폴더로 들어가는 것과 같은 결과를 보여주게 됩니다. 


명령프롬프트에서 dir 명령으로 실행하여 본 결과 모습입니다.

각각 심볼릭 링크 뒤에 실제 참조하고 있는 경로가 표시되고 있는것이 보이네요.


# 심볼릭 링크 삭제

심볼릭 링크를 삭제하기 위해서는 파일은 del 명령으로, 디렉터리는 rmdir 명령으로 삭제를 합니다.

윈도우 탐색기일 경우에는 그냥 del키로 삭제하시면 됩니다.


먼저 notepad 파일을 삭제하고, windows 디렉터리를 삭제한 후의 dir 명령을 통해서 해당 디렉터리의 파일 존재 유무를 확인했습니다.

깨끗하게 삭제가 되었네요.



예전부터 있는 명령어였는지 모르겠지만 이전에는 특정 프로그램을 통해서 심볼릭 링크를 걸었던 기억이 있는데 mklink 명령어가 있으니 참 편리하네요.






 




 





윈도우에서 심볼릭링크를 사용하는 방법입니다. 윈도우 Vista부터는 지원한다고 하나 이하 버번의 윈도우에서는 지원을 하지 않네요.

먼저 필요한 파일을 다운 받습니다.
http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

사용법 
junction.exe [타겟폴더] [소스폴더] 

ex)
C:\>junction c:\Program-Files "c:\Program Files"




윈도우 비스타 이상에서의 심볼링 링크 만들기

mklink를 이용해서 만듬
파일
mklink [링크파일] [원본파일]

파일 - 하드링크
mklink /H [링크파일] [원본파일]

폴더
mklink /D [링크폴더] [원본폴더]

폴더 - 하드링크
mklink /J [링크폴더] [원본폴더]

'잡동사니' 카테고리의 다른 글

수학 기호  (0) 2012.05.17
윈도우 서비스팩 이미지 삭제하여 공간 확보하기  (0) 2012.02.06
무료 프로그램  (0) 2012.01.04
웹 브라우져 북마크 프로그램  (0) 2011.05.22
[iTunes] 백업/복원을 위한 위치  (0) 2011.04.20