新手教程⑧ 最简单实用RSYNC配置脚本 VPS增量备份

2010年11月18日 2055 字数 59913 阅读 77 评论 标签:Education · rsync · 数据同步

文章导读

小夜好久没写教程了。最近事情比较多,今天正好赶清明节放假。抽2个小时,写个最简单的RSYNC同步的配置文件方法:

  • 一共2个压缩包,一个是服务器端,一个是客户端
  • 服务器端为数据源VPS,客户端为备份VPS
  • 仅支持单向同步,即备份功能
  • 服务器端和客户端2个VPS,均为Linux操作系统

配置文件压缩包下载:rsync服务器端配置 - rsync客户端配置

一、首先是配置服务器端,例如IP:111.111.111.111

下载 rsync-server.zip 文件,解压后,上传到/etc目录,需要设置4个地方:

1.设置 /etc/rsyncd/rsyncd.conf 中的服务器端IP(第7行)为您VPS的IP

address = 111.111.111.111

2.设置 /etc/rsyncd/rsyncd.conf 中允许同步的客户端IP(第20行),多IP用空格隔开:

hosts allow=222.222.222.222

3.设置 /etc/rsyncd/rsyncd.conf 中的需要同步的目录(第35行)

path = /home/wwwroot

4.设置 /etc/rsyncd/rsyncd.secrets 中用户名及密码,并用命令给予600权限

chmod 600 /etc/rsyncd/rsyncd.secrets

二、设置服务器端IP、允许客户端IP以及用户名密码,设置后服务器端运行rsync,命令:

/usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

三、配置备份客户端,例如IP:222.222.222.222

下载 rsync-root.zip 文件,解压后,上传至/root目录中:

1.设置rsync密码/root/pass文件(无须用户名),与服务器端一至,并给予600权限,命令:

chmod 600 /root/pass

2.设置rsync路径/root/rs.sh,与服务器端一至,并给予可执行权限,命令:

rsync -avzP --delete  --password-file=/root/pass vpsmmuser@111.111.111.111::vpsmmhome /home/wwwroot
#其中vpsmmuser为服务器端/etc/rsyncd/rsyncd.secrets中用户名
#其中111.111.111.111为服务器端IP
#其中vpsmmhome为/etc/rsyncd/rsyncd.conf中34行自定义命名
#其中/home/wwwroot为需要同步的网站目录

chmod +x /root/rs.sh

四、可以用 crontab 功能,每1小时,或每天同步一次数据:

crontab -e

25 */1 * * * /root/rs.sh
//每个小时的第25分钟自动运行一次
25 04 */1 * * /root/rs.sh
//每天的25分04时自动运行一次

五、常见错误解答

1.服务器端/etc/rsyncd/rsyncd.secrets和备份端/root/pass,均需要600权限
2.可以手动执行/root/rs.sh,看是否能够同步成功
3.切记,此同步是数据完全同步,会删除掉备份端有,而服务器端没有的文件
4.此为增量备份,只同步修改过或没有的文件,原有文件不会下载,很节省时间和流量

小夜博客仅做资料收集,不对商家任何信息及交易做信用担保,购买前请注意风险,有交易纠纷请自行解决。

已有 77 条评论

  1. greyboy greyboy

    greyboy:~# cronab -e -bash: cronab: command not found greyboy:~#
    为什么呢

    1. 小夜 小夜

      因为我的原因,写错了。已修正为:crontab -e

  2. 水晶奖杯 水晶奖杯

    这个很实用,赞一个,用上了,谢谢!

  3. _____________Cc _____________Cc

    可以实现一台做客户端,同步多台服务器?
    怎么实现呢? 麻烦指点一下

    1. 小夜 小夜

      正常设置就可以啊。多客户端备份单服务器端,单客户端备份多服务器端,或多端对多端,都可以。设置不同的[vpsmmhome],来设置多一些不同备份目录。

  4. _____________Cc _____________Cc

    如果是单台客户端多台服务器端 ,服务器端设置好,客户端写入多条命令就可以了?
    rsync -avzP --delete --password-file=/root/pass vpsmmuser@111.111.111.111::vpsmmhome /home/wwwroot这样的

    1. 小夜 小夜

      本地的备份目录,需要不同的。例如@2.2.2.2::vps22home /home/vps22和@3.3.3.3::vps33home /home/vps33 区分即可。

  5. xiaodan xiaodan

    服务端是止VPS吗?那客服端呢。什么都上传到ROOT目录下啥意思啊。
    这两个的目地是备份到哪里啊?VPS备份到另一个VPS吗还是备份到自己家机器

    1. 小夜 小夜

      这里同步数据的服务器端,以及客户备份端,都是Linux系统,如果您自已家用电脑,是ubuntu或centos系统,也可以用的。

    2. xiaodan xiaodan

      家里系统没用过linux都是win

  6. 雨月辰景 雨月辰景

    强大的备份功能,感谢小夜!

  7. 主机码 主机码

    这个备份很不错啊

  8. 河北seo 河北seo

    学习了。努力配置中!!!

  9. 西瓜 西瓜

    小夜你好,问个关于WP的问题
    就您这篇文章中调用的内容,譬如下面此段很长,如何实现像您这样有拉动横条的效果,以方便大家阅读,毕竟有时候文字太长了,有部分显示不出来。麻烦指教下,谢谢。vpsmmuser@111.111.111.111::vpsmmhome /home/wwwroot

    1. 小夜 小夜

      用css定义一下:overflow: auto; max-height: 300px;

  10. tiger tiger

    @ERROR: auth failed on module bc12345home
    rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]

    为什么会这样

    1. 小夜 小夜

      上述常见错误,服务器端和客户端,密码文件,都要600权限

    2. 微笑sysu 微笑sysu

      赞!原来只能是600

  11. 味道 味道

    帮助很大,谢谢小夜。

  12. 品客 品客

    刚好用到.以前用过那篇备份教程,死活不备数据库.

  13. 男人的梦想 男人的梦想

    请问小夜,vps上用ssh证书登录的怎么办

    1. 小夜 小夜

      RSYNC走的是单独的密码认证体系设置,和sshd没关系。我的VPS上面,ssh都不能登陆的,一样可以用。只要你文件都弄好,用什么登陆的都没有关系。

  14. laoke laoke

    /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
    -bash: /usr/bin/rsync: No such file or directory 求解!

    1. 小夜 小夜

      可能是您的VPS没有安装rsync软件,centos执行 yum install rsync
      如果debian执行 apt-get install rsync

    2. laoke laoke

      O了! 谢谢哦~

  15. laoke laoke

    哦也~ 呼唤小夜快快回答问题, 在等着呢。

  16. blesswarrior blesswarrior

    rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]
    服务器端/etc/rsyncd/rsyncd.secrets和备份端/root/pass,都是600权限

    1. 小夜 小夜

      服务器端/etc/rsyncd/rsyncd.conf 中,IP是否设置正确?默认是111那个,需要设置成你服务器的IP地址。

    2. laoke laoke

      我也出现了跟blesswarrior一样的问题,能补救不?

  17. blesswarrior blesswarrior

    address 和 hosts allow 都应该设置正确
    客户端能显示rsyncd.motd的字。但还是提示那个错误

    1. 小夜 小夜

      我曾经遇到过这样的错误。重新上传了备份端的rs.sh和pass,重新设置了rs.sh和pass的权限,然后,莫名其妙就好了。

  18. blesswarrior blesswarrior

    2012/04/11 14:46:07 [1658] params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
    2012/04/11 14:46:07 [1658] name lookup failed for 209.141.57.151: Name or service not known
    2012/04/11 14:46:07 [1658] connect from UNKNOWN (209.141.57.151)
    2012/04/11 14:46:07 [1658] auth failed on module qqxjbbs from unknown (209.141.57.151): unauthorized user

    这个是/home/wwwlogs/rsync.log显示出来的。。
    重新上传 再设置权限还是一样。。

    1. laoke laoke

      问题解决了没?

  19. laoke laoke

    rsync.log:
    2012/04/11 15:49:42 [1444] auth failed on module 11xhome from v-11-111-11-11.ub-freebit.net (11.111.11.11): unauthorized user 提示未经授权的用户?

    1. 小夜 小夜

      感觉像是备份端,rs.sh 中服务器端IP设置错误。

    2. 夜郎 夜郎

      ip正确的

    3. BabeGrant BabeGrant

      终于扯腾出来了

      服务端配置文件 /etc/rsyncd/rsyncd.conf 第38行 auth users = loong 删掉 就行了 就可以启动匿名传送了

    4. argb argb

      我也犯了个很二的错误 auth 这行我写了名字aaa 结果一直用名字bbb连接,一直报这个错 幸亏google到你这了 否则估计要犯二一晚上了

  20. Car DVR Car DVR

    之前的文章备份用的很GOOD...
    介个..抽空可以试试~~

    1. 小夜 小夜

      之前那个适用于本身数据量不大,网站和MYSQL每天打个包,往FTP一传就OK了。
      如果整个目录10G,用RSYNC增量备份,比较方便和快速。

    2. laoke laoke

      小夜同志为毛又不回答我的问题啊... 伤心啊!!!

    3. 小夜 小夜

      这个问题,我没遇到过,所次不知道怎么回答啊。你要仔细检查你的设置,垦定是哪里没弄对。上述教程中的每个文件,都要仔细检查一下。

    4. 夜郎 夜郎

      一步一步按照你的教程搞,结果一样...
      算了,我还是找找别的教程吧。

  21. lyfeng703 lyfeng703

    请教怎么设置开机自动启动,搞了半天没有成功。

  22. 网站 网站

    想问下,服务器端要开什么端口吗?如果只开放了80端口也可以?

    1. 小夜 小夜

      要开883端口

  23. powermill powermill

    同步数据库滴时候需不需要停止MYSQL 呀

  24. 佚名 佚名

    夜总,介绍一些用备份发送到邮箱的方法嘛~~~我只有1台vps这些备份都不适合我呢~

  25. 都市放牛 都市放牛

    小夜,我是菜鸟小白。你这教程里的服务端跟客户端分别指什么,比如我现在国内VPS放的是我的网站,美国VPS想给国内VPS做增量备份,那么哪个是客户端哪个是服务端呢,我就怕搞反了。还有按你说的上传脚本上去然后设置好就行了吗,还要做什么?

    1. 小夜 小夜

      服务器端是指正常网站端,客户端就是指备份端。把数据从服务器端,向客户端备份的意思。

  26. 都市放牛 都市放牛

    还有每天备份时间设置为晚上3点怎么弄,白天不能让他备份

    1. 小夜 小夜

      crontab -e 然后,输入 00 03 * * * /root/rs.sh 即可

  27. 都市放牛 都市放牛

    掉大,RSYNC不知道怎么安装,网上教程纷繁复杂,不知道信哪个好,还有安装了那个目录好像和本文不同 比如/usr/bin/rsync

    1. 小夜 小夜

      执行 rsync 看什么结果,如果提示没有这个程序。就 yum install rsync(centos)或 apt-get install rsync(ubuntu/debian)这样来安装就好。

  28. 都市放牛 都市放牛

    这么晚小夜还在,太感谢了!不过我的这些问题,应该可以和跟我一样的小白分享了。我替大伙谢谢小夜了!

  29. manyan manyan

    夜总,请问我要备份两个文件夹怎么操作。。
    我是想把数据库/usr/local/mysql里面的文件也同步过去。请问要怎么操作,然后/home下的文件也要同步过去。然后一个5.4一个是5.3的centos没影响吧?能随时恢复吧?谢了

  30. lkddi lkddi

    @ERROR: auth failed on module vpsmmhome
    rsync error: error starting client-server protocol (code 5) at main.c(1530) [receiver=3.0.6]

    服务器端/etc/rsyncd/rsyncd.secrets和备份端/root/pass,都是600权限

    各个信息都没错,就是找不到问题!

  31. 无线网 无线网

    很详细 已经运行 感谢
    另:恭喜~小夜运气真好 mini都能中标~~~

    1. 小夜 小夜

      客气了,人品大爆发。

  32. PHP100 PHP100

    不需要先安装 rsync吗?

    1. 小夜 小夜

      大多数系统默认就有rsync,如果没有,执行 yum install rsync 或 apt-get install rsync 安装就可以了。

  33. PHP100 PHP100

    @ERROR: auth failed on module vpsmmhome
    error starting client-server protocol (code 5) at main.c(1503)
    这个是什么错误呢?

    1. 小夜 小夜

      先检查用户名是否正确,然后,检查pass文件,是否为600权限。密码及600权限,要双方相同。

    2. PHP100 PHP100

      还是不行,看日志是auth failed on module vpsmmhome from unknown : unauthorized user
      貌似跟[vpsmmhome]这里的
      auth users = loong
      有关?
      多谢!

    3. 小夜 小夜

      这个错误,就是用户名和密码的错误,检查一下双方pass和rsyncd.secrets,是否完全一至。

    4. PHP100 PHP100

      搞定,/etc/rsyncd/rsyncd.conf 38行的错误!
      不过貌似看你教程里面没提到要修改这里!
      我把这里的用户名修改为/etc/rsyncd/rsyncd.secrets中的用户名,终于就可以了!多谢了

    5. 小夜 小夜

      好的,稍后我再检查一下教程,争取做到最严谨。

  34. 乐乐高 乐乐高

    博主你好,我在客户端运行了rsync -avzP --delete --password-file=/root/rsyncd/pass cjcshadow@173.208.251.253::vpsmmhome /home/wwwroot/overbestmall 出错了。。提示如下:
    +welcome to my rsyncd
    =======================================================

    receiving file list ...
    2536 files to consider
    rsync: mkdir "/home/wwwroot/overbestmall" failed: No such file or directory (2)
    rsync error: error in file IO (code 11) at main.c(587) [Receiver=3.0.9]
    难道我的客户端也要有/home/wwwroot/overbestmall 这个路径吗??

  35. PHP PHP

    rsync: failed to connect to IP: Connection refused (111)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6
    这个是怎么回事呢?多谢

    1. 小夜 小夜

      @PHP IP错误,请仔细检查设置。

  36. 小强 小强

    小夜您好,
    搜索到这个文章,还真不错,但我在测试同步时,显示:
    sh /root/rs.sh
    rsync: failed to connect to 192.168.103.175: Connection timed out (110)
    rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
    我在网上搜索是没有开始783端口,我开启一样的问题,然后想起SSH的端口改了,又加上改的端口,还是一样的。
    所以向您请教怎么解决呢?
    多谢

    1. 小夜 小夜

      这个提示,应该是目标服务器未运行。你看一下,你想要同步的主服务器,是否开启了rsyncd服务。

    2. 小强 小强

      我检查了,是没有开启,但开启后,还是显示一样的错误。

    3. 小强 小强

      rsync: failed to connect to 192.168.103.175: Connection timed out (110)
      rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
      还是一样的错误

    4. 小夜 小夜

      那就检查目标服务器的rsyncd.conf设置,包括密码文件,以及IP地址等,电脑就是这样,只会执行命令,如果连不上,垦定是设置原因。

    5. 小强 小强

      小夜,您好
      我看了下rsyncd.conf文件,有:
      # This line is required by the /etc/init.d/rsyncd script
      pid file = /var/run/rsyncd.pid
      但是,我未找到/var/run/rsyncd.pid,怎么处理?

    6. 小强 小强

      问题:linux下Rsync 服务器启动错误-->failed to create pid file /var/run/rsyncd.pid: File exists

      解决方案:rm -rf /var/run/rsyncd.pid;再重新启动Rsync服务(rsync --daemon)
      我解决了。
      但还是一样的。等明天再好好看脚本吧。

评论已关闭