首页 » VPS 知识 » 浏览内容

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


2012-03-15 18:55:32 3,356 0 发表评论 字体: 作者:C.K.
标签: rsync增量备份

体验版 88 元,个人版 128 元,多用户版 288元个人版160元升级到多用户版。

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

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

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

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

yum search rsync

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

yum install rsync.x86_64

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

vi /etc/rsyncd.conf

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

uid = root
  • gid = root
  • use chroot = no
  • max connections = 4
  • pid file = /var/run/rsyncd.pid
  • lock file = /var/run/rsync.lock
  • log file = /var/log/rsyncd.log
  • # 以下是所有的模块,没一个模块指定一个需要备份的目录(客户端备份时只需指定模块名就可以了)
  • [web1]                                #此为模块名称
  • path = /home/ftp/1520/web1-xxx/              #指定需要备份的目录
  • ignore errors
  • read only = true                                                      #是否只读
  • list = false
  • #hosts allow = 223.21.39.41                           #允许连接的客户端IP
  • auth users = backup                                                #用户备份的用户名
  • secrets file = /etc/rsync.passwd                #密码校验文件
  • [sql1]
  • path = /home/mysql_data/sql1/
  • ignore errors
  • read only = true
  • list = false
  • #hosts allow = 121.18.126.142
  • auth users = backup
  • secrets file = /etc/rsync.passwd
  • # 需要说明的两个配置
    # hosts allow 因为客服端在内网,所以这里如果填写IP的话,请填写外网IP。注释掉将允许任何连接,这时请设置一个相对复杂的密码(不建议注释!不重启路由器的话,外网IP不会变的,变了再改一下配置文件呗!)
    # auth users 网上很多资料说这里设置的用户名必须是系统真实存在的,经过测试,这里可以随便指定!只用来做客户端的验证!

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

    vi /etc/rsync.passwd

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

    backup:123456

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

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

    chown root:root /etc/rsync.passwd
  • chmod 600 /etc/rsync.passwd
  • 5、重启rsync
    # centos使用xinetd方式运行rsync,所以重启xinetd就OK了。

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

    yum search xinetd

    yum install xinetd.x86_64

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

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

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

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

    vi /etc/rsync.passwd

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

    123456

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

    chown root:root /etc/rsync.passwd
  • chmod 600 /etc/rsync.passwd
  • #权限必须为600

    10、执行同步命令

    /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

    cd /usr/local/LuNamp/cmd
  • vi web_backup.sh
  • # 脚本内容

    #!/bin/sh
  • . "/usr/local/LuNamp/cmd/common.inc"
  • #[web1]
  • /usr/local/rsync/bin/rsync -vzrtopg --delete --progress --password-file=/etc/rsync.passwd backup@xxx.xxx.xxx.xxx::web1 /home/ftp/1520/web1-xxx/
  • SYC_STAT=$?
  • if [ "$SYC_STAT" != 0 ];then
  •         showmsg "${color_red}web1 backup error!${color_white}"
  •         echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) '[web1] backup error' >> /var/log/web_backup.log
  • else
  •         showmsg "${color_green}web1 backup ok!${color_white}"
  •         echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) '[web1] backup ok' >> /var/log/web_backup.log
  • fi
  • # 如果你有多个模块,可以拷贝以上代码,增加到下面,修改一下模块名称及备份到本地的目录,还有提示信息就可以了。shell只顺序执行的。
    # 脚本里的echo xxx>> /var/log/web_backup.log 是将备份的时间和是否成功的记录存放到一个日志里。方便检查。

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

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

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

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

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

    crontab -e

    # 计划任务如何写 google一下

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

    shutdown -h now

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

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

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

    /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/

    网站统计 Statistics

    • 创建时间: 2005年1月3日 距今5066 天
    • 日志总数: 2461
    • 评论总数: 630
    • 标签总数: 654
    • 链接总数: 273
    • 最后更新: 2018-8-31 17:57:04
    • 您是本站第 14167788 位访客

    广告区 Guǎng Gào