2016. 12. 19. 21:15
rsync sshpass로 패스입력없이 백업하기 짜르방/므흣짤방2016. 12. 19. 21:15
상황
- A서버의 데이터를(/home/daehan/data) rsync를 사용해서 B서버(/home/backup/)로 백업.
- A서버 B서버 모두 rsync 설치됨.
- A 서버(예 mystory.com) - 계정아이디 daehan / 패스 daepass / ssh포트는 2030
- B서버에서 rsync 실행. root권한.
- crontab 에 등록해서 주기적으로 백업.
인터넷에서 찾아보면 rsyncd.conf 파일만들고 어쩌구 하던데 그냥 양쪽에 rsync 설치만 해도 되네..
일반적으로 rsync 사용시 ssh 포트를 안바꿨다면
]# rsync -avr --delete daehan@mystory.com:/home/daehan/data /home/backup/
daehan 패스워드 입력하라고 하면 입력해주고 끝.
이렇게만 해줘도 된다.
나처럼 애들이 찝접대는거 싫어해서 ssh 포트를 바꿨다면...
]# rsync -avr --delete -e 'ssh -p 2030' daehan@mystory.com:/home/daehan/data /home/backup/
또는 --rsh 옵션으로 하면된다.
]# rsync -avr --delete --rsh="ssh -p 2030" daehan@mystory.com:/home/daehan/data /home/backup/
crontab 등에 등록해서 사용하려면 sshpass라는것을 사용하면 된다. 설치법은 쉬우니 알아서 검색.
-e 옵션 사용시
-e "sshpass -p 패스워드 ssh -l 계정이름 -p 포트번호"
--rsh 옵션을 사용시
--rsh="sshpass -p 패스워드 ssh -l 계정이름 -p 포트번호"
난 --rsh 로 사용. -e 옵션으로 해도 된다.
그냥 한다면
]# rsync -avr --delete --rsh="sshpass -p daepass ssh -l daehan" mystory.com:/home/daehan/data /home/backup/
난 포트를 바꿔줬으니 ssh 포트옵션을 추가로 써준다.
]# rsync -avr --delete --rsh="sshpass -p daepass ssh -p 2030 -l daehan" mystory.com:/home/daehan/data /home/backup/
B서버의 크론탭에 추가하려면 명령복사해서 크론탭에 등록.
매일새벽 5시에 mystory.com 서버의 data 디렉토리 백업
]# crontab -e
* 5 * * * rsync -avr --delete --rsh="sshpass -p daepass ssh -p 2030 -l daehan" mystory.com:/home/daehan/data /home/backup/
참고.
ㅁ rsync Options -P (--partial --progress) 이어받기(iso 같이 큰 파일에 유용)와 전송 진행상황 출력 -C (--cvs-exclude) CVS에서 무시하는 파일을 무시. 예, CVS, *~, #*, *.old, *.bak, *.o core 등 --delete 송신 측에 없는 파일을 삭제 -z (--compress) 전송 내용 압축 --exclude PATTERN 지정된 패턴을 전송할 때 제외(파일/디렉토리/와일드카드 모두 사용가능) -a (--archive) 디렉토리 구조 전체를 파일 속성을 유지한체로 옮김 -u (--update) 나중에 수정된 파일은 유지. (클라이언트와 서버의 시스템 시간 차이가 작다는 가정하에) -v (--verbose) 전송 상황과 결과 출력 -e (--rsh) 전송방법 선택. 뒤에 아규먼트로 ssh -n (--dry-run) 실제 파일을 전송하지 않는다. 실제 전송하기 전에 테스트용으로 사용[출처] rsync 옵션 및 예제|작성자 jinkalee_new