업)rsync 명령을 사용하여 nas1서버에서 nas2 서버로 백업하기(nas2 에서 명령입력)
컨텐츠 정보
- 12,197 조회
- 10 댓글
- 0 추천
- 목록
본문
putty.exe로 접속하여 root권한 sudo -i 상태에서
rsync -avz --delete --rsh='ssh -p포트번호' shimss@192.168.0.8:/volume2/homes/shimss/www/piwigo /volume2/homes/shimss/www/piwigo
복사 후 패스워드 입력후 아래와 같이 백업 사례 입니다.
출처 :http://rafi.inha.ac.kr/~wbstory/tc/wbstory/234
https://www.joinc.co.kr/w/Site/Tip/Rsync
업)rsync 명령을 사용하여 nas1서버에서 nas2 서버로 백업하기(nas2 에서 명령입력)
rsync -avz --delete --rsh='ssh -p22' shimss@192.168.0.8:/volume2/homes/shimss/www/piwigo /volume2/homes/shimss/www/piwigo
전_ 사용중인 파일을 후_백업폴더로
rsync -avzO -e 'ssh -p{NAS에서 설정한 SSH 포트 번호}' {전_백업디렉토리경로} {백업폴더접근계정}@{NAS IP or URL}:/volume1/{후_백업폴더경로}
출처: https://damduck01.com/424 [담덕이의 탐방일지]
현재 web 폴더을 ip28에 /volume1에 백업 합니다
rsync -avzO -e 'ssh -p22' /volume1/web shimss@192.168.0.28:/volume2/nas1_rsync_backup
암호 넣고 성공
rsync -avzO -e 'ssh -p22' /volume1/web shimss@192.168.0.28:/volume1
는 직접 web 폴더에 백업은 않되네요
=========================
- 이하 자료 .....공부중입니다.
1) 서버백업 rsync을 이용하여 명령입력후 패스워드 입력 rsync가 시놀로지 dsm6.1.2에서 정상 동작 합니다
암호까지 입력하는 방법은 공부후 정리합니다
-------------------
리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
rsync를 사용하기로 했습니다.
우선 ssh를 통해서 rsync 백업을 할려고 하면, password를 묻습니다.
한번씩 할 때는 패스워드를 치면 상관없지만, crontab을 사용해서 주기적으로 할려고 하면 문제가 발생합니다.
해결하는 방법을 이것저것 찾았는데 2가지 정도가 나오네요.
첫번째는 ssh-keygen을 통해서 패스워드를 묻지 않게 하는 방법 입니다.
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
58:bd:ef:fd:3b:62:79:2e:ea:de:c4:73:2d:7d:11:2b root@web-tl
The key's randomart image is:
+--[ DSA 1024]----+
| |
| . |
| . . . |
| o . o|
| . S . E o |
| .. ..o|
| .+o.+|
| .o*o+.|
| o++.*++|
+-----------------+
# cat ~/.ssh/id_dsa.pub | ssh [원격ID]@[원격HOST] "cat >> .ssh/authorized_keys"
password: 암호입력<ENTER>
# _
이렇게 설정을 해 두면, 해당 원격 서버에 접속할때 암호를 전혀 묻지 않게 됩니다.
이런식으로 백업 하시면 됩니다.
하지만, 뭔가 찝찔하죠..
누구나 이 자리에 앉으면 패스워드를 몰라도 원격 호스트에 접근을 할 수 있게 되죠...
접근이 안 된다면, 서버에 접속해서, .ssh/authorized_keys 의 퍼미션을 600 으로 수정해 줍니다.
# ssh [원격ID]@[원격HOST]
# chmod 600 ~/.ssh/authorized_keys
두번째는 sshpass를 사용해서 접근하는 방법니다.
CentOS나 fedora에서는 기본 yum해서는 들어 있지 않습니다.
아래와 같이 epel을 통해서 받습니다.
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# yum update
# yum -y install sshpass
이렇게 설치해 주시면 됩니다.
Ubuntu를 쓰시는 분들은 apt-get으로 받으세요.
sshpass을 사용법을 알아보면.. 아래와 같습니다.
sshpass -p '[암호]' ssh [원격ID]@[원격HOST]
myPassword
' ssh username
@server.example.com
이런식이죠...
그러면, 이걸로 rsync를 해 봐야 겠죠?
# rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/
이렇게 하시면 됩니다.
참 쉽죠?
여기서 주기적으로 백업을 하고 싶다면..
# crontab -e
이렇게 뛰우시고 내용을 수정하시면 됩니다.
*/5 * * * * rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/
이렇게 해 두면 5분 주기로 백업이 진행 됩니다.
하지만, 이건 더욱 찝찝합니다. 패스워드가 코드에 들어가 있으니 -_-;;
잘 고민해서 사용하세요..
그래도 한다면.. 1번이 조금 괜찮을 듯...
수환이의 SSH키를 이용한 RSYNC 백업법 셀스크립트 2008.01.07. 16:46 |
SSH키를 이용한 RSYNC 백업법
============================
A 서버 : 백업대상 서버 (원본서버) A서버계정:suhan
B 서버 : 백업진행 서버 (백업서버) B서버계정:inkaftp
시나리오: B 서버는 A 서버의 특정 계정으로 자동로그인 하여 A 의 내용을 B로 Rsync 한다.
======================================================================================
1> 키생성
B 서버에서 키를 생성해보도록 하겠다.
키는 생성하는 위치가 중요한것이 아니라 개인키를 가진쪽이 공개키를 가진쪽으로 접속한다.
[inkaftp@edutotal ~]$ ssh-keygen -d -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/inkaftp/.ssh/id_rsa):
Created directory '/home/inkaftp/.ssh'.
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again: <ENTER>
Your identification has been saved in /home/inkaftp/.ssh/id_rsa.
Your public key has been saved in /home/inkaftp/.ssh/id_rsa.pub.
The key fingerprint is:
11:ce:7a:2d:60:0d:09:b3:2a:8b:3f:de:9a:8f:96:20 inkaftp@edutotal.com
RSA 방식으로 키를 만들었으며 , 패스워드는 넣지 않았다.
.pub 파일이 공개키이며 이파일은 접속을 당할 서버 즉 A서버의 접속할 계정에 심어야 된다.
2> 공개키를 전송한다.
#scp /home/inkaftp/.ssh/id_rsa.pub suhan@A서버아이피:~/.ssh/autorized_keys
(키가여러개일때는 뒤에 숫자를 붙인다 keys2...)
.ssh 디렉이 없으면 먼저 만들어두도록 한다
패스워드 묻어볼것이다... 중략...
3> B서버에서 A 서버로 접속테스트 해본다.
# ssh -i /home/inkaftp/.ssh/id_rsa suhan@A서버아이피
RSA key fingerprint is 03:c0:4d:25:a6:5d:0c:41:70:a7:11:0e:f7:12:ee:c8.
Are you sure you want to continue connecting (yes/no)? yes <ENTER>
정상접속이 된다면 성공이다.
4> RSYNC 에 걸어보자
서버가 여러개일 경우 관리를 위해 개인키 id_rsa 파일을 알아보기 쉽게 계정과 서버아이피로 이름을바꾼후에 -i 옵션으로 로딩한다.
# mv /home/inkaftp/.ssh/id_rsa /home/inkaftp/.ssh/suhan_AServer
#rsync -avzrt --delete -e "ssh -i /home/inkaftp/.ssh/suhan_AServer" suhan@A서버아이피:/home/suhan/www /home/inkaftp/backup
#rsync -avzrt --delete --rsh="ssh -i /home/inkaftp/.ssh/suhan_AServer -l suhan" A서버아이피:/home/suhan/www /home/inkaftp/backup
위의 2개 모두 정상 동작할것이다.
5> B서버의 inkaftp Cron 에 등록한다.
[inkaftp#B서버]$ vi /home/inkaftp/rsync_cron_exe.sh
#!/bin/bash
rsync -avzrt --delete -e "ssh -i /home/inkaftp/.ssh/suhan_AServer" suhan@A서버아이피:/home/suhan/www /home/inkaftp/backup
만든 파일에 실행권한을 준다.
[inkaftp#B서버]$ crontab -e
30 4 * * * /home/inkaftp/rsync_cron_exe.sh | mail -s [백업알리미] 내멜주소 <=결과를 메일로 보내준다.
PS. 서버내에 공간이충분하고 파티션이나 드라이버가나눠져 있다면 매일 매일 내부백업을 해두는것도 도움이 될것이다.
vi /etc/cron.daily/rsync_exe.sh
#!/bin/bash
rsync -avzrt --delete /home/mainweb/www /home1
만약 보안상의 이유로 키에 패스워드를 걸경우는 expect 를 사용하면 자동화가 가능하다
수환이의 간단 expect 사용법 참조...
[출처] 수환이의 SSH키를 이용한 RSYNC 백업법|작성자 사랑굳
♠ 출처는 링크 참조 바랍니다. https://11q.kr ♠
관련자료
-
링크
shimss@11q.kr님의 댓글
Ds1817+를 기본세팅 해주세요.. Raid 구성이던지..
DS1513+ > Rsync를 통해서 DS1817+로 옮기시면 됩니다..
(단, 체크 옵션 중에 메타데이타(?)를 해제 해주셔야 그냥 자료처럼 복제 됩니다.)
그 다음 DS1513+에서 제어판 > 업데이트 및 복원 > 구성백업을 통해서 구성 백업 파일을 준비하시고..
DS1817+로 복원 하시면 될 듯 합니다.
[출처] NAS에서 NAS로 데이터 이전하기 (시놀로지 나스 (Synology NAS) 대표 포럼 카페) |작성자 벌새
shimss@11q.kr님의 댓글
rsync -avzO -e 'ssh -p{NAS에서 설정한 SSH 포트 번호}' {전_백업디렉토리경로} {백업폴더접근계정}@{NAS IP or URL}:/volume1/{후_백업폴더경로}
출처: https://damduck01.com/424 [담덕이의 탐방일지]
rsync -avzO -e 'ssh -p1234' /volume1/web shimss@192.168.0.28:/volume1
shimss@11q.kr님의 댓글
haru 2017.12.22 10:48 조회 수 : 240
rsync의 주요옵션
-v 진행상황을 상세히 보여줌
-r 지정한 디렉토리의 하위 디렉토리까지 재귀적으로 실행
-l 소프트링크 보존
-H 하드링크 보존
-p 버전속성 보존
-o 소유속성 보존(루트)
-g 그룹속성 보존
-t 타임스탬프 보존
-D 디바이스 파일보존(루트)
-z 데이터압축 전송
-u 추가된 파일만 전송
-b 낡은 파일은 ~가 붙음
-u 새로운 파일을 덮어쓰지 않음
-c 서버와 클라이언트 파일크기를 세밀히 체크
-e ssh(rsh) 전송암호화
--existing : 추가된 파일은 전송하지않고 갱신된 파일만 전송
--delete : 서버에 없는 파일은 클라이언트에서도 삭제
--exclude 'PATTERN' : 패턴과 맞는 파일만 전송
--stats : 결과를 보고
--daemon : 대몬모드로 운영함(이건 inetd.conf에 지정할 때 필요함)
shimss@11q.kr님의 댓글
shimss@11q.kr님의 댓글
2015.07.17 13:56
Linux, rsync, 동기화, 리눅스, 제외
rsync 특정 파일 제외하기
password.txt 파일은 rsync 동기화 시에 제외하기
# rsync -avz --delete --exclude="password.txt" root@192.168.1.1:/var/www/html/ /var/www/html/
rsync 특정 폴더 제외하기
.svn 폴더는 rsync 동기화 시에 제외하기
# rsync -avz --delete --exclude=".svn" root@192.168.1.1:/var/www/html/ /var/www/html/
rsync 특정 파일&폴더 제외하기
위 두 가지를 모두 합치면 됩니다.
# rsync -avz --delete --exclude="password.txt" --exclude=".svn" root@192.168.1.1:/var/www/html/ /var/www/html/
출처: https://webinformation.tistory.com/31 [끄적끄적]