rsync 원격 동기화 설정

5036 단어 rsynctroubleshooting
어제 드디어 서버 권한을 얻었습니다. 오늘 처음으로 온라인에 올라온 서버는 개발자의 원격 백업을 협조합니다.처음이라 마음이 다소 부담스러워 잘 못 할까 봐×××일은...)
개발자가 포인트의 디렉터리를 두 서버에 백업하라고 요구했다. 사용한 도구는 rsync였다. 원래는 매우 간단한 일이었다. 결과적으로 너무 오랫동안 사용하지 않았고 세심하지 않아서 과정에서 작은 문제가 생겼다. 다행히도 리더가 1, 2를 지도해 주었기 때문에 최종적으로 임무를 순조롭게 수행한 셈이다. 다음은 오늘의 과정과 겪은 문제를 기록한다.
작업 요구사항은 다음과 같습니다.
개발자 A가 포인트 복사본을 대상 호스트에 동기화할 수 있도록 지원합니다.
소스 서버: 192.168.1.1
대상 서버: 192.168.1.2 192.168.1.3
서버 플랫폼 Ubuntu
구성 프로세스
============= 대상 서버 ==============
대상 서버에서 프로필(기본값은 없음), 수동으로 추가해야 함
wuguihong1@ubuntu:~$ vim/etc/rsyncd.conf
uid = www
gid = www
pid file=/tmp/rsyncd.pid
log file =/var/log/rsyncd.log
[jifen]
path=/data/app-jifen/
auth users=jifen
read only = no
strict modes = yes
secrets file =/etc/rsyncd.pass
hosts allow= 192.168.1.1
hosts deny = *
암호 파일 만들기
wuguihong1@ubuntu:~$ sudo vim/etc/rsyncd.pass
jifen:jifen@passwd
암호 파일 권한이 600인지 확인하십시오. 그렇지 않으면 오류가 발생합니다.
wuguihong1@ubuntu:~$ sudo chmod 600/etc/rsyncd.pass
동기화된 대상 디렉터리가 있는지 확인하십시오. 그렇지 않으면 오류가 발생합니다.
wuguihong1@ubuntu:~$ sudo mkdir/data/app-jifen/
디렉터리가 주인과rsyncd에 속하는지 확인하십시오.conf의 설정 일치
wuguihong1@ubuntu:~$ sudo chown www.www/data/app-jifen/
============== 소스 서버 ==============
root@ubuntu:/home/wuguihong1# echo "jifen@passwd">/etc/rsync.pass root@ubuntu:/home/wuguihong1# chmod 600/etc/rsync.pass
테스트
root@ubuntu:/etc# rsync -vzrtopg --delete/tmp/testrsync [email protected]::jifen --password-file=/etc/rsync.pass
sending incremental file list
testrsync
sent 70 bytes received 27 bytes 194.00 bytes/sec
total size is 0 speedup is 0.00
root@ubuntu:/etc# rsync -vzrtopg --delete/tmp/testrsync [email protected]::jifen --password-file=/etc/rsync.pass
sending incremental file list
testrsync
sent 70 bytes received 27 bytes 64.67 bytes/sec
total size is 0 speedup is 0.00
여기까지 설정하면 완성됩니다. 실제로는 어려운 일이 아닙니다. 단지 위에 프로세스(/usr/local/rsync)가 하나 도망갔습니다. 제가 올라가자마자 이 디렉터리에 맞추었습니다. 계속 오류가 발생했습니다. 나중에 물어봤더니 프로세스를 하나 더 만들어야 한다는 것을 알았습니다.wtf, 사전에 소통을 많이 해야 할 것 같아요.
PS: 설정이 끝난 후에 프로세스에 대한 감시를 하는 것이 가장 좋다. 프로세스가 죽으면 자동으로 당긴다.게다가 전원을 켜고 시동을 걸기;
# 프로세스 모니터링
root@ubuntu:/home/wuguihong1#/etc/default/rsync
RSYNC_ENABLE=false
로 수정
RSYNC_ENABLE=true
root@ubuntu:/home/wuguihong1#vim/etc/crontab//다음 줄 추가
*/1 * * * * root ps -C rsync ||/etc/init.d/rsync start
# 전원 켜기 시작
root@ubuntu:/home/wuguihong1# cd/etc/rc2.d
root@ubuntu:/home/wuguihong1# ln -s ../init.d/rsync S50rsync
나중에 여러 대의 기계를 배치해야 하기 때문에 아예 스크립트를 써서 처리했다.
#!/bin/bash
ip_allow = "192.168.1.1"
backdir = "/data/webapps"
user = "jifen"
# rsyncd.conf
cat << EOF >> /etc/rsyncd.conf
uid = www-data
gid = www-data
pid file=/tmp/rsyncd.pid
log file = /var/log/rsyncd.log
[jifen]
path=$backdir
auth users=$user
read only = no
strict modes = yes
secrets file = /etc/rsyncd.pass
hosts allow= $ip_allow
hosts deny = *
EOF
# rsync 
echo "jifen:jifen@rsync" > /etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass
# 
sed -i "s/RSYNC_ENABLE=false/RSYNC_ENABLE=true/" /etc/default/rsync
cd /etc/rc2.d
ln -s ../init.d/rsync S50rsync
cd
echo "*/1 * * * * root ps -C rsync || /etc/init.d/rsync start" >> /etc/crontab
/etc/init.d/rsync start

작업 중에 발생한 문제:
문제 1
root@ubuntu:/etc# rsync -vzrtopg --delete/tmp/testrsync [email protected]::jifen --password-file=/etc/rsync.pass
@ERROR: auth failed on module jifen
rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
해결 방법:
(1) 서비스, 클라이언트 암호 파일이 정확한지 확인: 서버 암호 파일 (여기는/etc/rsync.pass) 의 형식은 사용자: 암호입니다.클라이언트 암호 파일: 암호
(사용자 이름 없음)
(2) 암호 파일에 대한 권한이 올바른지 확인
wuguihong1@ubuntu:~$ ps aux|grep rsync
root 3978 0.0 0.0 12576 752 ? Ss 16:44 0:00 rsync --daemon --config/etc/rsyncd.conf
wuguihong1@ubuntu:~$ ll/etc/rsyncd.*
-rw-r--r-- 1 root root 298 Apr 25 17:04/etc/rsyncd.conf
-rw------- 1 root root 18 Apr 25 17:05/etc/rsyncd.pass
문제2
root@ubuntu:/etc# rsync -vzrtopg --delete/tmp/testrsync [email protected]::jifen --password-file=/etc/rsync.pass
sending incremental file list
testrsync
rsync: mkstemp "/.testrsync.k4hMJP"(in jifen) failed: Permission denied (13)
sent 70 bytes received 27 bytes 64.67 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1058) [sender=3.0.5]
해결 방법:
서버 측의 디렉터리(백업 디렉터리)가 존재하는지 확인하고 권한을 확인합니다.디렉터리를 만들고 권한을 수정하면 문제를 해결할 수 있습니다.
문제 3
root@ubuntu:/etc# rsync -vzrtopg --delete/tmp/testrsync [email protected]::jifen --password-file=/etc/rsync.pass
password file must not be other-accessible
continuing without password file
Password:
해결 방법:
서버와 클라이언트의 암호 설정 파일 권한이 600 (600 만 가능) 인지 확인하십시오. 명령chmod 600rsync가 아니라면.pass 수정하면 됩니다.

좋은 웹페이지 즐겨찾기