새소식

사용팁/System Digging

sshfs를 이용한 파일명 변환 전송

  • -
mkdir temp

euc-kr로 파일 이름이 작성된 파일들이 있습니다. 부득이하게 리눅스 머신에 저장하게 되었죠. 윈도우에서만 동작하는 클라우드 프로그램이 있어서 복잡한 과정 최대한 생략하고 한 번에 윈도우 클라우드 클라이언트가 접근하게 할 수 없을까 하는 생각을 했습니다.

 

win-sshfs 라는게 있더군요 라이브러리에 .net 프레임웍에 덕지덕지 설치한 다음에 실행시켜보니 오~~ 마운트는 잘 되었는데 한글이 ???같이 깨져 보이더군요..

 

리눅스 머신에서 파일명을 utf-8로 강제 변환해버리자는 생각을 하고 찾아보니 convmv라는 유틸이 있더군요. 하지만.. 해당 리눅스 머신 설정 문제로 패키지 설치가 안됬습니다... 이런 문제로 시간을 소모하기는(설정을 다 해서 잘 쓰다가도 종종 반복되는 문제라서..) 힘들어서 다른 방법을 생각해보게 되었습니다.

 

리눅스라면 파일명 charset을 지정할 수 있을텐데...라는 생각을 하면서 찾아보니  간단히 다른 리눅스에서 sshfs 패키지 설치해서 사용하면 해결이 되는 문제였습니다.

 

사실 제 윈도우 클라이언트는 리눅스 상에서 virtualbox 안에서 실행되고 있어서 리눅스에서만 한글 문제가 해결되면 윈도우로는 공유 폴더 기능으로 손쉽게 넘겨줄 수가 있었습니다. 즉, 리눅스(안에 윈도우) 형태였는데 윈도우에서 하려니 생긴 문제였으니 리눅스에서 해결하면 되는 문제였든거죠...

 

sshfs를 먼저 설치했습니다.

sudo apt-get install sshfs

해당 위치를 마운트할 빈 디렉토리를 만들었죠.

 

연결할 데이터는 192.168.0.11:/root/TEMP 디렉토리에 있습니다.

sshfs root@192.168.0.11:/root/TEMP temp -o modules=iconv,from_code=euc-kr,to_code=utf-8

옵션에서 인코딩은 문자열만 봐도 대충 아실겁니다. modules 옵션은 파일명 변환에 사용할 도구 이름입니다.  만약 iconv가 설치되지 않았다면 관련 내용은 검색하시기 바랍니다. 2006년 이후 배포판은 glibc에 포함되어 있기 때문에 기본적으로 포함되어 있습니다. from_code는 원본 파일명 인코딩, to_code는 변환할 인코딩을 지정해주시면 됩니다.

 

마운트를 해제하시려면 fusermount 명령을 사용하셔야 합니다.

fusermount -u temp
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.