sshfs를 사용하여 Linux 서버간 공유폴더 설정하기
리눅스 서버(Linux Server)를 운영하다보면 서버간에 폴더를 공유(Shared folder)해야 할 때가 있다.
공유폴더를 설정한다거나, 백업폴더를 설정한다거나 여러 이유가 있을 수 있다.
그 때 사용할 수 있는 서버간에 공유폴더를 설정할 수 있는 방법을 설명하고자 한다.
이 방법은 Ubuntu, Debian 및 CentOS, Redhat, Amazon Linux 에서 사용할 수 있다.
1. Ubuntu , Debian 설치 방법
# apt-get install sshfs
아주 간단하다.
2. CentOS, Redhat
리눅스 확장 저장소 추가.
# yum install epel-release -y
설치
# yum install fuse sshfs
3. Amazon Linux AMI
#yum install fuse
Amazon Linux 저장소에는 sshfs 패키지가 없다. 컴파일 환경을 만들고, 소스를 다운받아서 컴파일 하여야 한다.
# yum install glib2-devel
# wget http://downloads.sourceforge.net/project/fuse/sshfs-fuse/2.5/sshfs-fuse-2.5.tar.gz
# tar -xzvf sshfs-fuse-2.5.tar.gz
# cd sshfs-fuse-2.5/
# ./configure
# make
# make install
사용법 (공통) : root 사용자가 실행하여야 한다.
# sshfs [email protected]:/home/backup /mybackup -o allow_other
[email protected] : 원격 서버 로그인 계정 및 원격 아이피. root 사용자로 안해도 된다.
root 이외의 사용자를 입력할 경우 chown 같은 특수 명령어가 안되고 해당 사용자의 권한을 따르게 된다.
:/home/backup : 원격 서버의 폴더
/mybackup : 내 폴더. 이미 생성되어야 있어야 하고 마운트(연결)중에는 원격 데이터가 보인다.
원래 있던 파일은 삭제되지 않고, 마운트를 해제 하면 접근할 수 있다.
-o allow_other : root 이외의 사용자도 접근할 수 있게 할지 선택.
이 옵션을 넣지 않으면 root는 공유폴더를 사용할 수 있고, 다른 일반 사용자는 (공유되지 않은) 일반 폴더를 보게 된다.
더 많은 옵션을 보려면
# sshfs --help
입력!
이때 권한제어 시스템은 uid 를 따른다. 즉 remote 서버의 uid 1001 유저의 파일을 local 서버의 uid 1001 유저가 소유하게 되는 것이다. (리눅스 권한제어 시스템은 uid 기반으로 동작한다.)
<그림 : id 명령어를 통해 사용자의 id 를 알수 있다>
연결(mount) 확인하기
#df -h
부팅시 실행하게 하기.
이것은 원격서버에 id_rsa.pub 를 authorized_keys 에 등록한 후에 사용하는 것이다.
ssh 자동로그인을 세팅하는 방법은… 구글에 찾아보도록 하여라. 시간이 된다면 추후에 글을 쓰도록 하겠다.
자동로그인을 세팅하지 않았다면 [부팅시 실행하게 하기] 부분은 동작하지 않으니 건너 뛰도록 하자.
fstab 에 넣어도 되는데 라엘이는 crontab 을 더 선호한다.
부팅때 한번 실행하도록 cron을 설정하자.
#crontab -e
@reboot /usr/local/bin/sshfs [email protected]:/home/backup /mybackup -o allow_other
이때 sshfs 명령실행 파일의 full path(전체 경로)를 입력하도록 하자. /whereis sshfs 또는 /which sshfs 를 입력하면 알 수 있다.
마운트 해제하기.
#fusermount -u /mybackup
간혹 오류가 나면서 마운트가 안풀릴때가 있는데
#umount /mybackup
도 시도해 본다.
마운트가 도저히 안풀리면 재부팅한다.
#reboot
마운트 해제 확인
#df -h
평소에 좋은 글 잘보고 있습니다.
NFS 대비 SSHFS의 장점이 무엇이 있을까요?
한쪽에서만 세팅해도 되니까 더 설정하기 쉽고, SSH라서 (스니핑에 대해서) 더 안전하고, 원격 root 유저로 마운트하면 퍼미션이나 소유권 변경도 가능하게 됩니다.
공유된 파일 또한 리눅스 uid 적용이 되어있어서 접근 권한 관리할 수 있습니다. (단, 이 경우 양쪽 서버의 일반사용자 uid 를 맞추어주는게 좋음)