달력

11

« 2024/11 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

상황

- 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) 실제 파일을 전송하지 않는다. 실제 전송하기 전에 테스트용으로 사용


:
Posted by 비개인오후