rsync实现本地定时自动增量备份远程服务器数据

林继 VPS 知识 3,362 共写了2471个字 (2012-03-15 18:55:32) 没有评论 打印 扫描二维码 百度已收录

我们的目的:
在公司内部使用rsync定时自动增量备份远程服务器上的数据,包括网站目录、数据库。

为什么要这么做:
对于一些小公司而言,一般只有一台服务器,万一出现故障,那就彻底玩完了。当然,如果你有预算,那再加一台做双机互备最好不过了!但是如果你没有,本地备份也算个折中的办法!
LUM的备份功能,我没有试过,因为我没有闲置的FTP。本地做FTP,又没有固定IP。

我对linux的了解还局限于,登录 > cd xxx > ls,以下所有东西都是边查资料,边测试的!

1、安装srync服务端(我的是centos,如果你是BSD,使用ports安装)
# 先搜索一下rsync具体的名字是什么

  1. yum search rsync

# 搜索结果会显示完整的rsync名,接下来安装他,安装很快。

  1. yum install rsync.x86_64

2、配置服务端 rsync
# 编辑 /etc/rsyncd.conf(没有就建一个)

  1. vi /etc/rsyncd.conf

# 输入如下内容
# 通用配置(指定传输文件UID,pid文件存放位置,日志存放位置)

  1. uid = root
  2. gid = root
  3. use chroot = no
  4. max connections = 4
  5. pid file = /var/run/rsyncd.pid
  6. lock file = /var/run/rsync.lock
  7. log file = /var/log/rsyncd.log
  8. # 以下是所有的模块,没一个模块指定一个需要备份的目录(客户端备份时只需指定模块名就可以了)
  9. [web1]                                #此为模块名称
  10. path = /home/ftp/1520/web1-xxx/              #指定需要备份的目录
  11. ignore errors
  12. read only = true                                                      #是否只读
  13. list = false
  14. #hosts allow = 223.21.39.41                           #允许连接的客户端IP
  15. auth users = backup                                                #用户备份的用户名
  16. secrets file = /etc/rsync.passwd                #密码校验文件
  17.  
  18. [sql1]
  19. path = /home/mysql_data/sql1/
  20. ignore errors
  21. read only = true
  22. list = false
  23. #hosts allow = 121.18.126.142
  24. auth users = backup
  25. secrets file = /etc/rsync.passwd

# 需要说明的两个配置
# hosts allow 因为客服端在内网,所以这里如果填写IP的话,请填写外网IP。注释掉将允许任何连接,这时请设置一个相对复杂的密码(不建议注释!不重启路由器的话,外网IP不会变的,变了再改一下配置文件呗!)
# auth users 网上很多资料说这里设置的用户名必须是系统真实存在的,经过测试,这里可以随便指定!只用来做客户端的验证!

3、建立密码校验文件 rsync.passwd

  1. vi /etc/rsync.passwd

# 按如下格式输入用户名密码

  1. backup:123456

#这里建议输入一个较为复杂的密码

4、设置此密码文件所属用户和组都为 root,且权限必须为600

  1. chown root:root /etc/rsync.passwd
  2. chmod 600 /etc/rsync.passwd

5、重启rsync
# centos使用xinetd方式运行rsync,所以重启xinetd就OK了。

  1. chkconfig rsync on
  2. service xinetd restart

# 这里如果出现错误,大多数是因为没有xinetd。安装一下就ok了。

  1. yum search xinetd

  1. yum install xinetd.x86_64

#重新执行重启xinetd命令
# 到这里服务端的配置就已经完成了,处于等待连接的状态!下面进行客户端的安装和配置!

6、随便找一台闲置电脑,安装任意系统(我这里安装的centos,rsync有WIN版本,也是可以的)

7、客户端安装rsync
# 安装步骤同上

8、建立密码文件/etc/rsync.passwd
# 客户端不需要配置文件,紧一个密码文件就可以了,且密码文件中只包含密码,没有用户名。

  1. vi /etc/rsync.passwd

# 内容如下 (与服务端backup密码一致)

  1. 123456

9、修改rsync.passwd 用户权限和组

  1. chown root:root /etc/rsync.passwd
  2. chmod 600 /etc/rsync.passwd

#权限必须为600

10、执行同步命令

  1. /usr/local/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.passwd backup@xxx.xxx.xxx.xxx::web1 /home/ftp/1520/web1-xxx/

# backup@xxx.xxx.xxx.xxx::web1,backup为服务端设置的用户名,@后为远程服务器IP地址,web1为服务端配置文件中设置的模块名。
# –delete 表示如果远程服务器删除某文件,同步时也将本地此文件删除,保证文件一致性。
# –password-file 指定客户端密码文件存放位置
# 最后的路径为 将远程文件备份至本地的路径。
# 更多的命令参数可以google一下,能找到很多!

11、编辑一个shell脚本,备份的时候执行,或加入计划任务!
# 脚本可以放在任何位置,这里为了方便管理,统一放在 /usr/local/LuNamp/cmd

  1. cd /usr/local/LuNamp/cmd
  2. vi web_backup.sh

# 脚本内容

  1. #!/bin/sh
  2.  
  3. . "/usr/local/LuNamp/cmd/common.inc"
  4.  
  5. #[web1]
  6. /usr/local/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.passwd backup@xxx.xxx.xxx.xxx::web1 /home/ftp/1520/web1-xxx/
  7. SYC_STAT=$?
  8. if [ "$SYC_STAT" != 0 ];then
  9.         showmsg "${color_red}web1 backup error!${color_white}"
  10.         echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) '[web1] backup error' >> /var/log/web_backup.log
  11. else
  12.         showmsg "${color_green}web1 backup ok!${color_white}"
  13.         echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) '[web1] backup ok' >> /var/log/web_backup.log
  14. fi

# 如果你有多个模块,可以拷贝以上代码,增加到下面,修改一下模块名称及备份到本地的目录,还有提示信息就可以了。shell只顺序执行的。
# 脚本里的echo xxx>> /var/log/web_backup.log 是将备份的时间和是否成功的记录存放到一个日志里。方便检查。

12、建立脚本中的日志文件

  1. cd /var/log/
  2. vi web_backup.log

# 以后所有备份的记录都放在这里,方便检查
# 日志只有两个状态,一个OK,一个ERROR,其他的我也不会写。哦而看看,能知道哪天没有备份成功就可以了。

13、手动执行备份任务,或者加入计划任务
# 不想加入计划任务的。每次手动执行一下这个脚本就可以了。

  1. /usr/local/LuNamp/cmd/web_backup.sh

# 加入计划任务,每天凌晨3点进行备份(如下图)。

  1. crontab -e

# 计划任务如何写 google一下

14、如果想备份完成后自动关机,在脚本的最后增加一行

  1. shutdown -h now

15、如果想需要备份的时候,备份机自动开机,并在设定的时间备份完成,然后自动关机。
# 使用 网卡网络唤醒,我的本地机器电源没有ATX。所以不行!有的可以自己实验。
这里有网络唤醒的详细介绍:
http://www.360doc.com/content/09/1101/23/314324_8245604.shtml

注: 备份为增量备份,如果数据较大,第一次备份的时间较长,以后就快了,只会备份新增的,或者修改过的文件。

加个限速参数就可以了 “–bwlimit=100” 限制传输速度100K/s

  1. /usr/local/rsync/bin/rsync -vzrtopg --bwlimit=100 --delete --progress --password-file=/etc/rsync.passwd backup@xxx.xxx.xxx.xxx::web1 /home/ftp/1520/web1-xxx/

历史上的今天

3月
15

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注

< >