시놀로지에서 rsync서비스를 이용해서 윈도우로 백업하는 방법을 기록합니다.
폐쇠망이거나 외부유출(클라우드 백업)을 꺼려하실때 유용합니다.
그리고 직관적으로 데이타 백업 파일을 액세스 할수 있기 때문에 어렵지 않게 관리 할수 있습니다.
1. 시놀로지 패키지 및 설정
1-1. 시놀로지 패키지 텍스트 편집기 설치 (공개키 설정 편하게..)
1-2. 시놀로지 rsync 서비스 활성화
ssh 암호화 포트는 기본포트(22)가 아닌 특정포트를 사용
1-3. ssh서비스 활성화
기본포트(22)가 아닌 특정포트 적용, 계정 키 접근권한설정(폴더, 공개키파일 접근권한 설정)을 위해서 터미널을 사용해야됩니다. rsync서비스 정상작동후 ssh서비스를 내려도 rsync는 동작합니다.
1-4 사용자 홈 서비스 활성화
계정별 홈폴더가 생성되도록 활성화 해야됩니다.
아래와 같이 서비스 활성화 하시면 됩니다.
1-4 사용자 홈 폴더 및 파일 생성
터미널 프로그램으로 ssh접속을 합니다.
1. 시놀로지 작업
- 시놀로지 접속
# ssh -p 시놀포트 시놀아이디@주소.com
2. .ssh 폴더생성
# mkdir .ssh
3. authorized_keys 파일생성
# cd .ssh
# touch authorized_keys
4. 파일권한설정(소유자 제외한 다른 사용자 접근불가)
# chmod 755 /var/services/homes/시놀아이디
# chmod 700 /var/services/homes/시놀아이디/.ssh
# chmod 600 /var/services/homes/시놀아이디/.ssh/authorized_keys
5. ssh 설정파일 수정
# sudo -i
# password: 접속한 계정이 Administrators그룹에 속한경우 접속계정 비번 입력
# vi /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFiles .ssh/authorized_keys
6. 시놀로지 ssh서비스 재시작
# synoservicectl --restart sshd
서비스 재시작후 제대로 서비스가 시작 못합니다.
DSM제어판에서 활성화된sshd를 비활성화->활성화 하면 접속가능
2. cwRsync (Rsync for Windows) 클라이언트 설치
2-1. cwRsync Client 다운로드
CygWin, cwRsync등 다양한 윈도우 rsync프로그램이 존재합니다.
개인적으로 cwRsync 클라이언트가 포터블 형식이라 이걸 사용합니다.
클라이언트는 무료, 서버는 비용을 지불해야됩니다
어차피 시놀로지에서 땡겨오는 방식이니 클라이언트를 사용하면 됩니다.
2-2. cwRsync 기본설정
백업할 디스크에 압축을 푼후 아래와 같은 cwrsync.cmd 배치파일을 실행합니다.
D드라이브에 cwrsync라는 폴더에 압축을 풀었습니다.
cwrsync.cmd파일을 실행하면 현재 디렉토리를 기준으로 사용자 폴더를 생성합니다.
\home\{사용자명}\.ssh\
비밀키와 공개키가 저장될 곳입니다.
2-3. 사용자 공개키, 개인키 생성
cwrsync\bin 폴더로 이동하면 라이브러리파일들을 볼수 있습니다.
현재 사용자 공개키,개인키를 생성합니다.
생성하는 방법은 ssh-keygen.exe파일을 이용해서 생성하면 됩니다.
-----------------------------------------------
ssh-keygen 옵션
-t 옵션 : 암호화 타입설정, 일반적으로 rsa사용
-C 옵션 : 주석입력
-----------------------------------------------
ssh-keygen -t rsa -C "comment"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/{사용자명}/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/{사용자명}/.ssh/id_rsa
Your public key has been saved in /home/{사용자명}/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:WbzyiiI8YHFRGBl7f9v3f+h7pEZqzqqIm86HR8Q546U test@test.com
The key's randomart image is:
+---[RSA 3072]----+
| o*. |
| +. . |
| ..o . o |
| . .. B .o . |
| o o *S.. |
|.. E .oo . .|
|.o o ... + + |
| +.oooo . .+ = o|
| +*=o o..+ooo++|
+----[SHA256]-----+
생성된 키값은 cwrsync\home\{사용자명}\.ssh\ 에서 확인할수 있습니다.
아래는 공개키와 개인키 파일을 확인할수 있습니다.
d:\cwrsync\home\{사용자명}\.ssh\id_rsa : private key, 개인키
d:\cwrsync\home\{사용자명}\.ssh\id_rsa_pub : public key, 공개키
3. 공개키 시놀로지 업로드 및 자동 로그인 테스트
3-1. NotePad++ 설치 및 인코딩 설정
NotePad++ 다운로드 하여 설치합니다.
설치후 자동 인코딩 설정을 off합니다. 이유는 스크립트를 작성하는데 한글이 들어갈경우 ANSI로 설정해야되는데
자동 인코딩이 활성화 되어 있으면 EUC-KR로 바뀌는거 방지하기 위함입니다.
https://notepad-plus-plus.org/downloads/
3-2. 공개키 파일 복사
id_rsa.pub 공개키파일을 NotePad++로 열면 아래와 같이 키값을 볼수 있습니다.
이 키값을 시놀로지 authorized_keys 넣어주면 됩니다.
이때 그냥 시놀로지 패키지중 텍스트 에디터를 사용해서 붙혀넣어 주시면 됩니다.
3-3. 시놀로지 접속 테스트 (개인키 접근권한 문제 해결)
cd d:\cwrsync\bin
ssh -p ssh포트 사용자명@test.com
ssh 접속 테스트를 했을때 아래와 같이 권한문제가 발생해서 개인키 사용불가 메세지가 나옵니다.
이때는 현재 사용자만 사용할수 있도록 권한을 변경해주면 해결할수 있습니다.
개인키파일 경로가 들어가서 현재사용자만 엑세스 할수 있도록 설정 변경해주됩니다.
파일권한을 700 (u+rws,g=,o=)으로 백업파일로 만든후 백업파일을 원본파일로 덮어써야됩니다.
그냥 권한만 변경했을때 적용이 되질 않습니다.
cd d:\cwrsync\home\{사용자명}\.ssh
d:\cwrsync\bin\rsync.exe --chmod=700 id_rsa id_rsa.bak
move id_rsa.bak id_rsa
윈도우에서 id_rsa파일을 복사해서 옮기거나 이동을 했을경우 id_rsa권한이 윈도우권한으로 재설정 됩니다.
그래서 권한설정에 문제가 발생합니다. 복사하거나 옮겼을경우 chmod=700으로 재설정 해야 정상작동합니다.
ssh 접속테스트
4. rsync 스크립트 작성
4-1. rsync 구동 테스트(예외폴더,파일 처리)
시놀로지 폴더 "test" 공유폴더를 백업하는 작업을 구현해보겠습니다.
d:\cwrsync\bin\rsync -avP -e './ssh -p ssh포트' 시놀로지계정@도메인주소.com::공유폴더명 /cygdrive/d/cwrsync/backup
이렇게 백업했을경우 #recycle폴더, @eaDir폴더(시놀로지 썸네일 db폴더)등 원치 않는 폴더도 같이 포함되어 백업이 됩니다.
이럴경우 예외폴더로 지정할려면 예외처리할 폴더나 파일을 exclude.txt 파일로 정의한뒤 예외처리작업을 하면 됩니다.
d:\cwrsync\bin\rsync -avP --delete --exclude-from='exclude.txt' -e './ssh -p ssh포트' 시놀로지계정@도메인.com::공유폴더명 /cygdrive/d/cwrsync/backup
4-2. 백업 파일 권한문제
시놀로지가 리눅스 기반으로 만들어진 나스입니다.
윈도우와는 다른 보안체계를 갖추고 있습니다.
그러므로 백업된 파일정보를 살펴보면 리눅스 권한이 포함되어 있는것을 확인할수 있습니다.
아래는 백업한 파일정보 입니다.
리눅스 -> 윈도우로 넘어가면서 권한문제 발생합니다.
이때 해결방법은 윈도우권한으로 완전히 넘기면 해결이 됩니다.
d:\cwrsync\etc\fstab 파일생성 및 작성
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
이때 backup폴더를 포함해서 삭제하셔야 적용이 됩니다.
적용후 다시 rsync로 백업하고 파일속성을 보면 아래와 같이 윈도우 권한만 있느걸 확인할수 있습니다.
참고로 rsync 구문중에 /cygdrive/d/cwrsync/backup 을 d:\cwrsync\backup으로 구현이 가능합니다.
이렇게 할 경우 /etc/fstab 속성을 적용하지 않기 때문에 NULL SID를 갖게 됩니다.
테스트 하다 알게된 이슈입니다.
4-3. 백업 스크립트 작성 (d:\cwrsync\bin\synology.cmd)
@ECHO OFF
SETLOCAL
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
REM 현재폴더 상위폴더 리턴 (백업폴더 생성을 위한 변수)
for %%I in ("%~dp0.") do for %%J in ("%%~dpI.") do set ParentFolderName=%%~dpnxJ
rsync.exe -avP --delete --log-file='log/synolog_log_%YYYY%-%MM%-%DD%-%HH%-%Min%.txt' --exclude-from='exclude.txt' -e './ssh -p 8888' test@synology.test.co.kr::test /cygdrive/d/cwrsync/backup/backup
REM XCOPY 옵션
REM /S : 복사할 폴더 내 모든 하위폴더를 포함
REM /H : 숨김파일, 시스템파일을 포함
REM /E : 비어 있는 폴더를 포함
REM /D : 복사를 하되 날짜기록에 변경사항이 없으면 건너뛰고 복사
REM /Y : 물어보는 질문없이 복사
rem 분당 xcopy
REM IF NOT EXIST %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD%-%HH%-%Min% (
REM MKDIR %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD%-%HH%-%Min%
REM XCOPY %ParentFolderName%\backup\backup %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD%-%HH%-%Min% /S /H /E /Y
REM )
rem 일별 xcopy
REM IF NOT EXIST %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD% (
REM MKDIR %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD%
REM XCOPY %ParentFolderName%\backup\backup %ParentFolderName%\backup\backup_%YYYY%-%MM%-%DD% /S /H /E /Y
REM )
rem 월별 xcopy
IF NOT EXIST %ParentFolderName%\backup\backup_%YYYY%-%MM% (
MKDIR %ParentFolderName%\backup\backup_%YYYY%-%MM%
XCOPY %ParentFolderName%\backup\backup %ParentFolderName%\backup\backup_%YYYY%-%MM% /S /H /E /Y
)
5. 윈도우 스케쥴러 등록
매주 한번 백업하는 스케쥴러를 작성한 예제입니다.
백업주기를 하루에 한번 했을경우 랜섬웨어나 바이러스가 시놀로지에 들어왔을경우 랜섬웨어나 바이러스도 같이 백업되는 불상사가 생길수 있습니다.
시놀로지에 스냅샷 기능도 있으니 차라리 백업은 주마다 한번씩 백업하는걸 추천드립니다.
스크립트 파일입니다.
홈계정폴더 개인키,공개키 없습니다. 생성해야됩니다.
'Linux > Cloud' 카테고리의 다른 글
rsync failed verification -- update discarded (will try again). (0) | 2021.05.02 |
---|---|
시놀로지 방화벽 설정 (한국만 접근) (0) | 2021.03.30 |
시놀로지 인증서로 아파치 서버 갱신방법 (0) | 2020.09.06 |
시놀로지 터미널 원격 자동접속(비번x) (0) | 2020.04.12 |
NextCloud 서버간 rsync 백업 (0) | 2020.01.27 |