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>
아래 사진도 도난당했습니다(사진이 있으면 이해하기 쉽습니다). 다음은 대칭키 기술을 통해 앨리스가 밥에게 정보를 보내는 모습입니다.
<code>消息-->[公钥]-->签名后的消息-->私钥-->解密后的消息 公钥加密,私钥解密</code>
위의 공개 키와 개인 키에 대한 지식을 이해하고 이제 두 호스트 사이에 신뢰 관계를 설정해 보겠습니다.
, , 101에서 100과 신뢰 관계를 설정하기 위해(즉, 100은 101에 로그인할 때 비밀번호를 입력할 필요가 없음) 이번에는 개인 키 서명 프로세스가 사용됩니다.<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>
<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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.