Windows 11에서 오래된 버전의 Linux Samba를 연결할 수 없는 환경에서 ssh fuse 마운트하여 백업하는 방법을 설명.
목차
이슈
Windows 11에서 네트워크 드라이브 보안 등급을 낮춰 CentOS 4로 바로 smb로 붙을 수도 있지만 보안적으로 좋지 못하다. 그래서 아래와 같이 CentOS 8의 cifs를 거쳐서 백업하도록 함.
해결
백업 데이터 흐름
[Windows 11] ---cifs---> [CentOS 8] ---ssh fuse---> [CentOS 4]
설정
[CentOS 8] 에서
[root@centos8 ~]# hostname -I
192.168.0.169
[root@centos8 ~]# ssh-keygen
[root@centos8 ~]# cat /root/.ssh/id_rsa.pub
ssh-rsa XXXXXXXXAAAADAQABAAABAQDKYPVLJ2aEvUj18mgF0BuHbza413SbGjmbnaDgKp4Gg27GOKVHHmKaiR2GZT+5/vvM6c5OdndVRq0I0x9N+S2qOmRRV7iZ4yjHg2dh1D7KVFyKbJwe3CrFRfNgZn+UTH/icT0Sh6HxeufuzvSFBGpfM8IFPHOUMkSLjTq8yjRJ8VhY/CzdAQG6Y6p+rLcHNbT/0gLFIh8MX+N6OKQKN4YnPzphgzysFwWc8TJuGPDYIEqJj2kfWC4evh0R6t/kJTtJoYYD7cN6Yf4Rmv+o0YisE2SRRcG5yVhVmUXbvbP2bXsBINvbqlBbqMQNQadQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX root@centos8
[root@centos8 ~]# ssh-copy-id root@192.168.0.254
[root@centos8 ~]# yum install fuse-sshfs
[root@centos8 ~]# vim /etc/fstab | grep fuse
192.168.0.254:/data2/Backup/Win11_25H2 /backup fuse.sshfs defaults,_netdev,port=7743 0 0
[root@centos8 ~]# mount -a
[root@centos8 ~]# df -h | grep backup
192.168.0.254:/data2/Backup/Win11_25H2 1000G 0 1000G 0% /backup
[root@centos8 ~]# mkdir /backup/D_Drive
[root@centos8 ~]# mkdir /backup/Desktop
[root@centos8 ~]# vim /etc/samba/smb.conf
...
hosts allow = 192.168.0.159
hosts deny = all
[backup-user$]
path = /backup
force user = root
force group = root
browsable = no
writable = yes
guest ok = yes
read only = no
[root@centos8 ~]# systemctl reload smb
[CentOS 4] 에서
[root@centos4 ~]# hostname -I
192.168.0.254
[root@centos4 ~]# ss -antop | grep sshd | grep LISTEN
LISTEN 0 0 :::7743 :::* users:(("sshd",3132,3)
- CentOS 8에서 ssh-fuse 마운트 전에 아래처럼 디렉토리 생성
[root@centos4 ~]# mkdir -p /data2/Backup
- pub 키 전송 확인 (ssh-copy-id)
[root@centos4 ~]# cat /root/.ssh/authorized_keys
ssh-rsa XXXXXXXXAAAADAQABAAABAQDKYPVLJ2aEvUj18mgF0BuHbza413SbGjmbnaDgKp4Gg27GOKVHHmKaiR2GZT+5/vvM6c5OdndVRq0I0x9N+S2qOmRRV7iZ4yjHg2dh1D7KVFyKbJwe3CrFRfNgZn+UTH/icT0Sh6HxeufuzvSFBGpfM8IFPHOUMkSLjTq8yjRJ8VhY/CzdAQG6Y6p+rLcHNbT/0gLFIh8MX+N6OKQKN4YnPzphgzysFwWc8TJuGPDYIEqJj2kfWC4evh0R6t/kJTtJoYYD7cN6Yf4Rmv+o0YisE2SRRcG5yVhVmUXbvbP2bXsBINvbqlBbqMQNQadQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX root@centos8
[Windows 11] 에서
- IP 확인
C:\Users\user> ipconfig | findstr IPv4
IPv4 주소 . . . . . . . . . : 192.168.0.159
- 탐지(랜_썸) 파일 생성
C:\Users\user> type D:\01_Doc\chk_file.txt
0BuHbza413Sb
- 수동 마운트 bat 파일 생성
C:\Users\user> type C:\Users\user\Desktop\Folders\01_Backup-cifs-mount.bat
@echo off
start \\192.168.0.169\backup-user$
exit
- 백업 bat 파일 생성 (C:의 Desktop과 D:를 sync 백업함)
C:\Users\user> type C:\Users\user\Desktop\Folders\02_rcp_d.bat
ECHO "Sync from D:\" "\\192.168.0.169\backup-user$\D_Drive"
FOR /f "tokens=*" %%a IN ('type D:\01_Doc\chk_file.txt') DO SET var=%%a
IF "%var%"=="0BuHbza413Sb" (
robocopy C:\Users\user\Desktop\ \\192.168.0.169\backup-user$\Desktop /MIR /Z /FFT /COPY:DT /R:2 /W:3
ECHO "Done sync from C:\Users\user\Desktop\" "\\192.168.0.169\backup-user$\Desktop - Finish."
robocopy D:\ \\192.168.0.169\backup-user$\D_Drive /MIR /Z /FFT /COPY:DT /R:2 /W:3
ECHO "Done sync from D:\" "\\192.168.0.169\backup-user$\D_Drive - Finish."
) ELSE (
echo "Detected Ransom. Check D:\01_Doc\chk_file.txt"
PAUSE
)
REM * 옵션 설명 :
REM - /MIR : 원본과 타겟을 sync함(delete 포함)
REM - /Z : 파일 복사 중에 네트워크 연결이 끊기는 등 중단이 발생했을 때, 나중에 명령을 다시 실행하면 처음부터가 아닌 중단된 지점부터 이어서 복사
REM - /MIR : 파일 시간이 2초 정도 차이 나는 것을 허용하여, 실제 변경되지 않은 파일을 불필요하게 다시 복사하는 것을 방지
REM - /COPY:DT : 기본은 /COPY:DTA 임. A(속성: 읽기전용, 숨김 등)까지 복사하지만, A를 제외하면 속성은 복사하지 않도록 함 (서버 마운트 방식이 fuse(sshfs)일 경우 필요)
REM - /R:2 : 파일 복사에 실패했을 때 2번 재시도 (기본값은 1,000,000번)
REM - /W:3 : 재시도하기 전에 3초 동안 대기 (기본값은 30초)
02_rcp_d.bat 파일을 수동으로 실행해서 데이터 백업을 하거나 Windows 스케줄러에 등록해서 자동으로 백업되도록 한다.
SSH Fuse 활용 Windows 11 백업