[Linux] sshfs로 다른 시스템 마운트(mount)하기

by 스뎅(thDeng) on

필요

특정 경로를 다른 서버로 연결(mount)하고 싶은 경우가 있다. 예를 들면, 백업해 둘 경로를 백업서버로 연결해서, 백업 경로에 파일을 넣으면 바로 백업서버에 저장이 되도록 할 수 있다.

[server1] /my/backups/jenkins -> [백업 서버] /backups/server1/jenkins
[server1] /my/backups/releases  -> [백업 서버] /backups/server1/releases
[server2] /my/backups/jenkins -> [백업 서버] /backups/server2/jenkins

여러 방법들이 있지만, 백업 서버에 SSH가 열려 있다면 SSHFS를 이용해서 간단히 마운트 할 수 있다. SSHFS(Secure SHell FileSystem)는 SFTP로 파일을 전송하는 클라이언트이다.

위의 server1, server2 등 마운트할 클라이언트 쪽에서만 아래 명령을 실행하면 된다.

SSHFS 설치

SSHFS 설치는 패키지 매니저를 쓰면 간단하다. 시스템에 맞는 명령을 사용하자.

$ yum install sshfs
$ dnf install sshfs
$ sudo apt-get install sshfs

마운팅할 경로 생성

$ mkdir -p /my/backups

$ # 보통 마운트 경로는 /mnt 경로 아래로 생성한다.
$ sudo mkdir -p /mnt/backups

SSHFS를 이용한 연결(mount)

$ # user와 x.x.x.x는 백업 서버의 사용자와 IP를 적어준다.
$ sshfs user@x.x.x.x:/backups/server1 /my/backups

$ # Ubuntu, Debian의 경우
$ sudo sshfs -o allow_other user@x.x.x.x:/backups/server1 /my/backups

위와 같이 실행하면 명령을 실행한 server1/my/backups 경로는 백업서버(x.x.x.x)의 /backups/server1에 연결된다.

$ # 연결이 끊기면 재접속할 수 있게 설정
$ sshfs -o reconnect user@x.x.x.x:/backups/server1 /my/backups

$ # SSH key 인증 방식을 쓴다면 인증 파일을 지정해 줄 수도 있다.
$ sshfs -o IdentityFile=~/.ssh/id_rsa user@x.x.x.x:/backups/server1 /my/backups

연결(mount) 확인

df 명령으로 마운팅된 경로와 해당 서버의 경로를 알 수 있다.

$ df -hT
Filesystem                             Type        Size  Used Avail Use% Mounted on
/dev/sda4                              xfs         268G  122G  147G  46% /
devtmpfs                               devtmpfs    7.8G     0  7.8G   0% /dev
tmpfs                                  tmpfs       7.8G     0  7.8G   0% /dev/shm
tmpfs                                  tmpfs       7.8G   57M  7.7G   1% /run
tmpfs                                  tmpfs       7.8G     0  7.8G   0% /sys/fs/cgroup
/dev/sda2                              xfs        1014M  130M  885M  13% /boot
tmpfs                                  tmpfs       1.6G     0  1.6G   0% /run/user/1000
user@my-backup-server:/backups/server1 fuse.sshfs   50G  4.2G   46G   9% /my/backups

서버가 재시작 되어도 항상 연결되어 있게 하려면 /etc/fstab 파일을 수정해 주면 된다.

sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs defaults 0 0

# 옵션이 필요하면 적어준다
sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0
sshfs#user@x.x.x.x:/backups/server1 /my/backups fuse.sshfs reconnect defaults 0 0

연결 해제(unmount)

연결을 끊고 싶으면 umount 명령을 사용한다.

$ umount /my/backups

참고

별도로 명시하지 않을 경우, 이 블로그의 포스트는 다음 라이선스에 따라 사용할 수 있습니다: Creative Commons License CC Attribution-NonCommercial-ShareAlike 4.0 International License