>백엔드 개발 >PHP 튜토리얼 >rsync를 사용하여 원격 서버 파일을 점진적으로 동기화하는 것을 잊지 마세요.

rsync를 사용하여 원격 서버 파일을 점진적으로 동기화하는 것을 잊지 마세요.

WBOY
WBOY원래의
2016-08-08 09:24:37904검색

rsync 원격 셸은 데이터를 점진적으로 동기화합니다

rsync를 사용하여 파일을 동기화하는 방법에는 두 가지가 있습니다. 하나는 데몬 방식(rsync 데몬)이고 다른 하나는 원격 셸 방식(rsync 원격 셸)을 사용하는 것입니다.

두 방법의 차이점

데몬 모드에서는 TCP를 통해 원격 rsync 데몬에 연결하는 방법입니다. 구성 파일을 사용하고 데몬 프로세스를 활성화해야 합니다.

<code>rsync [OPTION] user@host::src dest
rsync [OPTION] src user@host::dest</code>

원격 셸 방식, 이 방식에서는 구성 파일이나 데몬 프로세스를 사용할 필요가 없습니다.

<code>rsync [OPTION] user@host:src dest
rsync [OPTION] src user@host:dest</code>

데몬 방식은 구성 파일과 데몬 프로세스 설정이 너무 번거로워서 다음과 같이 동기화를 위해 원격 쉘 방식을 선택했습니다.

<code>  rsync -avr --delete yanruitao@123.123.123.123:/export/test/htdocs/files/ /export/test/htdocs/files/</code>

매개변수 avr --delete는 각각

을 나타냅니다.
<code>-a 归档(archive)模式,以递归方式传输文件,并保持文件属性
-v 输出同步的详细信息(verbose)
-r 对子目录进行递归模式处理(recursive)
--delete 删除源(SRC)中没有目标(DST)中有的文件</code>

모든 것이 정상이라면 위의 동기화 명령을 실행하면 원격 컴퓨터에서 yanruitao 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다(처음에는 관계를 설정할 것인지 묻는 메시지가 표시됩니다(아마도 , 세부 사항을 잊어 버렸습니다), Enter를 누르십시오), 실행 완료 후 규칙에 따라 동기화됩니다.

그런데 문제가 있습니다. 매일 2시에 증분 동기화를 수행하고 싶은데 이때 비밀번호를 입력할 수 없습니다. 두 대의 기계

두 머신 간의 신뢰 관계 구축

신뢰 관계를 구축하기에 앞서 공개키와 개인키를 기반으로 한 암호화와 인증에 대해 살펴보겠습니다

개인 키 서명 프로세스

아래 사진은 도난당한 사진입니다. ㅎㅎ 인증 과정을 이해하기 위해 이 사진을 활용하면 딱 맞습니다:

<code>消息-->[私钥]-->签名-->[公钥]-->认证
私钥数字签名,公钥验证</code>
  1. Alice는 공개 키와 개인 키를 생성하고 공개 키를 Bob에게 보냅니다.
  2. Alice는 개인 키를 사용하여 암호화라는 서명을 생성합니다.
  3. Alice는 서명된 정보를 Bob에게 보냅니다.
  4. Bob은 Alice의 공개 키를 사용하여 서명의 진위 여부를 해독하고 확인합니다.
    rsync를 사용하여 원격 서버 파일을 점진적으로 동기화하는 것을 잊지 마세요.
공개키 암호화 과정

아래 사진도 도난당했습니다(사진이 있으면 이해하기 쉽습니다). 다음은 대칭키 기술을 통해 앨리스가 밥에게 정보를 보내는 모습입니다.

<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息
公钥加密,私钥解密</code>
  1. Bob은 자신의 공개 키와 개인 키를 생성하고 공개 키를 Alice에게 보냅니다.
  2. Alice는 Bob의 공개 키를 사용하여 메시지를 암호화합니다.
  3. Alice는 암호화된 정보를 Bob에게 보냅니다.
  4. Bob은 자신의 개인 키를 사용하여 Alice가 보낸 정보를 해독하고 얻습니다.
    rsync를 사용하여 원격 서버 파일을 점진적으로 동기화하는 것을 잊지 마세요.

호스트간 신뢰관계 구축

위의 공개 키와 개인 키에 대한 지식을 이해하고 이제 두 호스트 사이에 신뢰 관계를 설정해 보겠습니다.

, , 101에서 100과 신뢰 관계를 설정하기 위해(즉, 100은 101에 로그인할 때 비밀번호를 입력할 필요가 없음) 이번에는 개인 키 서명 프로세스가 사용됩니다.
yanruitao192.168.1.100의 홈 디렉터리에서 공개 키와 개인 키를 생성합니다(기존 키는 무시할 수 있음)
<code>ssh-keygen -t rsa
#执行完之后会在家目录下的.ssh文件夹下生成id_rsa、id_rsa.pub两个文件,后者是公钥。
scp .ssh/id_rsa.pub yanruitao@192.168.1.101:/home/yanruitao/
#scp同样是通过remote shell的方式传送文件,回车之后会提示输入密码,此时
#还未建立信任关系,因此需要输入密码。确认100的公钥发送给101</code>
yanruitao192.168.1.101의 홈 디렉터리에서 yanruitao192.168.1.100과 신뢰 관계를 설정합니다
<code>#将刚才传送的100机器的公钥写入101yanruitao及目录下的.ssh/authorized_keys文件
cat id_rsa.pub >> .ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#至此就在yanruitao@192.168.1.101上对192.168.1.100建立了信任关系</code>
크론탭 설정
<code>0 */2 * * * rsync yanruitao@192.168.1.101:/export/wwwroot/hotdocs/files/ /export/wwwroot/hotdocs/files/
#设置完成,每天02:00分会执行一次增量同步</code>
발생한 문제

물론, 실제로 작동시키면 문제가 생길 수도 있습니다. 제가 할 때 두 기계의 사용자 이름이 달랐습니다. 하나는 yanruitao이고 다른 하나는 mywife였습니다(하하, 웃지 마세요). yanruitao, mywife 이력서와 신뢰 관계가 있습니다. 이때 mywife 홈 디렉토리에서 신뢰 관계를 설정하려면 위의 단계를 다시 수행해야 합니다. 또 다른 문제는 내 아내 컴퓨터의 /export/wwwroot/htdocs/files/ 폴더 소유자가 내 아내여야 한다는 것입니다.

<code>#修改文件夹所有者为mywife
sudo chown mywife:users /export/wwwroot/htdocs/files/</code>

그렇지 않으면 오류가 보고될 수 있습니다(특정 오류를 잊어버렸습니다. 회사에서 발생했습니다). 동기화에는 영향을 미치지 않는 것 같지만 $?가 23을 반환하므로 다음 작업에 영향을 미칩니다. 여기에서도.

참고기사

http://www.williamlong.info/archives/837.html
http://www.cnblogs.com/ymy124/archive/2012/04/04/2432432.html
http:/ /www.zhihu.com/question/25912483

이 글의 저작권은 작성자에게 있습니다(). 글의 무단 전재를 금합니다. 저자는 기사 페이지에 명확하게 명시되어야 합니다. 그렇지 않으면 당사는 법적 책임을 추궁할 권리를 갖습니다.

위 내용은 rsync를 이용한 원격 서버 파일의 증분 동기화에 대한 내용을 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:nginx 캐시 구성다음 기사:nginx 캐시 구성