rsync와 데이터 동기화, 백업
타이머 : rsync를 + 크론 예약 작업
실시간 : rsync에 + sersync (inotify를)
https://www.samba.org/ftp/rsync/rsync.html 공식 문서
- 리모트 카피의 SSH와 SCP 명령 (암호화 부)
- 로컬 복사본은 cp
- 기능 RM 삭제
rsync와의 추가 기능 중 일부는 다음과 같습니다 rsync를 추가 기능
- 등 링크, 장비 등의 특수 복사 문서를 지원하기 위해 링크, 장치, 소유자, 그룹 및 권한을 복사 지원
- 제외 및 제외-에서 배제 패키지 tar 명령에 해당 지정된 파일이나 디렉토리 동기화 기능을 제외 할 수 있습니다 GNU 타르와 유사한 옵션,
- CVS는 CVS 무시 것이라고 동일한 파일을 무시하고 모드를 제외
- SSH 의해 SSH 또는 RSH 포함한 투명한 원격 쉘을 사용하여 전달 RSH 암호화 (암호화없이 rsync에)
- 슈퍼 유저 권한이 필요하지 않습니다
- 파일 전송의 파이프 라인 대기 시간 비용을 최소화하기 위해
- 익명 또는 인증 모드 송신 처리 익명 또는 인증 된 Rsync 데몬 (미러링 이상) 지원을 위해 지원
rsync를 네트워크 서비스가 될 수 있습니다 (포트, 소켓)
rsync를 명령은 클라이언트에 명령입니다
rsync를 세 가지 작동 모드
- 동작의 제 1 모드 : 로컬
rsync -avz /root/aaa /tmp/ --->cp
rsync -avz --delete /root/aaa/ /tmp/ --->rm
- 제 2 동작 모드 : 보통 SSH 원격 쉘, 전송 키 키레스 결합 정규 작업
rsync -avzP -e 'ssh -p 22' /opt/ [email protected]:/tmp/ push
rsync -avzP -e "ssh -p 22" [email protected]:/tmp/ /opt/ 带斜线代表获取的是tmp下的文件 pull
rsync -avzP -e "ssh -p 22" [email protected]:/tmp /opt/ 不带斜线代表获取的是tmp这个目录 pull
- 작업의 세 번째 모드 : 네트워크가 rsync를 데몬, 암호화 성능 손실 VPN을 필요로하지 않는다 (PPTP, OpenVPN을, IPSec을)
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
주요 구문 :
1, 동등한 -vzrtopgDl -avz, 동기화 파일에서 밝혔다 및 디렉토리는 변경되지 않은 속성.
2, -P 동기 표시 처리, --progress로 대체 될 수있다
. (3) '22 -e가 SSH -p '이고, SSH 통해 채널 데이터 송신을 나타내고, -p (22)은 생략 될 수있다
(4) 루트 @ 192.168.105.135 / TMP / 원격 호스트 시스템 사용자, 주소, 경로
5 / 옵션 로컬 경로
(6)는, 파일의 내용을 동기화 이러한 일부 변경이 있으며, 제 1 비교 재 동기화
매개 변수 옵션 | 기술 |
---|---|
-v --verbose | 정보의 전송 동안 상세 출력 모드와 진행 |
-z --compress | 압축 변속기의 효율을 향상시키기 위해, - 레벨 압축 압축 NUM = 레벨 일 수있다 |
-a --archive | 아카이브 모드, 재귀 적으로 파일을 배포 표현과 -rlptgoD에 해당하는 모든 문서 속성을 유지 |
-r --recursive | 모든 하위 디렉토리는 재귀 적 모드,이 디렉토리는 동일하게 전송하다 |
-t --times | 꾸준한 시간 정보를 유지 |
-o --owner | 파일 소유자 정보를 유지 |
-p --perms | 파일 사용 권한을 유지하려면 |
-g --group | 파일을 보관하는 정보의 집합입니다 |
-P --progress | 프로세스의 동기화와 같은 표시 정보 전송 시간 스케줄 등 |
-D --devices | 장치 파일 정보를 유지 |
-l --links | 예약 소프트 링크 |
--지우다 | 차이 동기화 (위험) |
--들어오지 못하게 하다 | 하나의 파일을 제외 여러 파일을 {A, B}, {a..d 제외 } --exclude-에서 제외 복수의 파일 |
--partial | HTTP 대용량 파일 |
--bwlimit | --bwlimit = 100 속도 제한 |
엔터프라이즈 응용 프로그램 시나리오 :
- 두 서버 간의 데이터 동기화
- 백업 서버에 모든 클라이언트 - 서버 데이터 동기화
- inotify를 할 실시간 데이터 동기화 rsync를 + inotify를 또는 sersync와 함께 rsync와 기능
생산 시나리오 클러스터 아키텍처 서버 백업 솔루션 :
크론 +는 전체 네트워크 서버 데이터 백업 솔루션 제안 및 구현에 대한 책임 rsync는
- 회사와 혼란의 리더십 전체 네트워크 데이터 백업 중요한 데이터를 백업하는 솔루션을 제안
- 로컬 백업으로 포장 한 다음 백업 데이터를 통합 고정 스토리지 서버, 스토리지 서버에 다음의 스크립트를 통해 전체 네트워크에 rsync를 inotify를 응용 프로그램과 함께 결합하고 백업 알람 관리자의 결과를 확인
- IDC 룸 정기적으로 엔진 룸 화재 및 지진 문제는 데이터가 손실 될 방지하기 위해, 회사 내에서 다른 서버에 데이터를 백업
rsync를 장점 :
1, 증분 백업지지 소켓 (데몬) 중앙 백업 (슬라이딩지지, 클라이언트 기준이다)
원격 쉘 모드 채널 암호화 될 수 있고, (2) (SSH) 전송은 소켓 (데몬) 송신을 암호화 할 필요 IPSec을 VPN 서비스 또는 서비스의 사용
rsync를 단점 :
- 때 오랜 시간보다 동기화 된 작은 파일의 큰 숫자, 때때로, rsync를 프로세스를 종료 할 수 있습니다
- 완료되지 동기화가 완료 동안, 그것은 숨겨진 파일이 될 것이다, 10G 대형 파일이 때때로 잘못 터미널로 이동, 대용량 파일을 동기화, 전송은 HTTP 및 기타 매개 변수를 통해 달성 될 수있다. 원격 복사 일회용 SCP 수 있습니다
Rsync를 백업 전투
단계 rsync를 서버 구성
1, 서버를 구성, 현재 버전 번호 및 설치 패키지 rsync를 참조
rsync --version rsync-3.0.6-12.el6.x86_64
2, 정력이 프로필을 추가 /etc/rsyncd.conf
rsync를 구성 파일 공식 웹 사이트 : https://rsync.samba.org/ftp/rsync/rsyncd.conf.html
#配置文件详解,更多参数查看man rsyncd.conf
#Rsync server
#created by hejian 19:50 2019-3-17
##rsyncd.conf start##
uid = rsync //客户端具备的权限(不存在,需要创建)
gid = rsync
use chroot = no //安全相关
max connections = 2000 //客户端连接数
timeout = 600 //超时
pid file = /var/run/rsyncd.pid #进程ID文件
lock file = /var/run/rsync.lock #锁文件
log file = /var/log/rsyncd.log #日志文件
ignore errors #忽略错误
read only = false #可读写
list = false #不可以远程列表
hosts allow = 192.168.105.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup //虚拟用户
secrets file = /etc/rsync.password //存放用户账号密码的文件
#####################################
[backup] //模块调用
#comment = backup by hejian 19:50 2019-3-17
path = /backup //共享目录
[hejian]
path = /hejian
3, rsync를 사용자가 생성하고 디렉토리 / 백업을 공유하고, 디렉토리에 권한을 부여하는
useradd rsync -s /sbin/nologin -M
id rsync
mkdir /backup
chown -R rsync.rsync /backup/
4 암호 파일을 생성
echo "rsync_backup:123" > /etc/rsync.password
chmod 600 /etc/rsync.password
5 rsync를 서비스를 시작하고보기
rsync --daemon
lsof -i :873
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rsync 1647 root 3u IPv4 12479 0t0 TCP *:rsync (LISTEN)
rsync 1647 root 5u IPv6 12480 0t0 TCP *:rsync (LISTEN)
netstat -tunlp|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1647/rsync
tcp 0 0 :::873 :::* LISTEN 1647/rsync
ss -tunlp|grep rsync
tcp LISTEN 0 5 :::873 :::* users:(("rsync",1647,5))
tcp LISTEN 0 5 *:873 *:* users:(("rsync",1647,3))
ps -ef|grep rsync
root 1647 1 0 20:11 ? 00:00:00 rsync --daemon
root 1660 1505 0 20:12 pts/0 00:00:00 grep --color=auto rsync
6, 처음부터 부팅을 추가
echo "rsync --daemon" >>/etc/rc.local
cat /etc/rc.local
rsync를 클라이언트 구성 단계
1, 암호 파일을 작성하고 사용 권한을 수정
echo "123" > /etc/rsync.password (与服务端密码保持一致,免密登陆)
chmod 600 /etc/rsync.password(与服务端密码权限保持一致)
ll /etc/rsync.password
2 rsync의 파일 전송 (푸시 또는 풀은 클라이언트 동작)
(push)rsync -avz /backup/ [email protected]::backup/ --password-file=/etc/rsync.password
(pull)rsync -avz rsync://[email protected]:873/backup/ /backup/ --password-file=/etc/rsync.password
echo $? = 0 就代表程序运行是正确的
푸시 제외
rsync -avz --exclude=a /root/test/ [email protected]::backup/ --password-file=/etc/rsync.password
문제 해결
#Rsync server
#created by hejian 19:50 2019-3-17
##rsyncd.conf start##
uid = rsync
gid = rsync
use chroot = no
max connections = 2000
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 192.168.0.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
#####################################
[backup]
comment = backup by hejian 19:50 2019-3-17
path = /backup
가상 컴퓨터 스냅 샷
, 컬러 테마의 매개 변수를 수정, 주요 백업 구성 파일의 IP를 수정, 실제 시험 준비 환경을 rsync는 호스트 이름을 수정
클라이언트 오류
오류 :
[root@lamp01:/tmp]# rsync -avz /tmp/ [email protected]::backup --password-file=rsync.password
rsync: failed to connect to 192.168.105.136: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(124) [sender=3.0.6]
문제 해결 : 서버 방화벽이 켜져
오류 2 :
[root@lamp01:/tmp]# rsync -avz /tmp/ [email protected]::backup --password-file=rsync.password
rsync: could not open password file "rsync.password": No such file or directory (2)
Password:
@ERROR: auth failed on module backup
rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]
첫 번째 오류는 잘못된 경로 --password-파일 =은 / etc / rsync.password
두 번째 오류는 서버 암호 파일 거꾸로 쓰는 클라이언트, 서버 작성 계정과 암호, 클라이언트 쓰기 전용 암호입니다; 문제가 유효성 검사가 실패에 단어가 주도하고있다 철자가, passwod 파일 서버 루트가, 백업은 사용자가 rsync를하다 파일