Chinaunix首页 | 论坛 | 博客
  • 博客访问: 494134
  • 博文数量: 112
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 662
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-20 07:22
个人简介

一步一个脚印

文章分类

全部博文(112)

文章存档

2019年(2)

2017年(2)

2016年(2)

2015年(6)

2014年(35)

2013年(65)

分类: LINUX

2013-04-23 23:44:37

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

为什么要这么做: 
一般只有一台服务器,万一出现故障,那就彻底玩完了。当然,如果你有预算,那再加一台做双机互备最好不过了!但是如果你没有,本地备份也算个折中的办法!
LUM的备份功能,这个功能貌似很强大,可以问问度娘,因为我没有闲置的FTP。本地做FTP,又没有固定IP。

1、安装srync服务端(我的是centos,如果你是BSD,使用ports安装)
# 先搜索一下rsync具体的名字是什么
yum search rsync
# 搜索结果会显示完整的rsync名,接下来安装他,安装很快。
yum install rsync.x86_64
2、配置服务端 rsync

rsyncd.conf 是rsync服务器主要配置文件。
rsyncd.passwd是登录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                    #密码校验文件


[date1]
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。注释掉将允许任何连接,这时请设置一个相对复杂的密码(不建议注释!)
# 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 xinetdyum 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/

# /usr/local/rsync/bin/rsync 为rsync命令所在的路径 服务器环境不同路径可能不同 通过 find -name rsync  命令查找正确的路径 做相应的调整

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

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

mkdir shell 

cd shell

vi web_backup.sh # 脚本内容
#!/bin/sh

/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
        echo"web1 backup error!"
        echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) ' backup error' >> /var/log/web_backup.log
else
        echo "web1 backup ok!"
        echo $(date +%Y"-"%m"-"%d" "%H":"%M":"%S) ' backup ok' >> /var/log/web_backup.log
fi

 

用ll 看看刚写的shell 有没有可执行权限 如果没有 就执行下面这句

chmod  u+x  web_backup.sh

# 给这个文件加 可执行权限 ,因为默认 vi 写的一个文件 只是 读和写的权限 ,没有 x ,即执行的权限 x  --- execute  u -- user   ,文件拥有者

 


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



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


13、手动执行备份任务,或者加入计划任务 
# 不想加入计划任务的。每次手动执行一下这个脚本就可以了。
/usr/local/shell/web_backup.sh
# 加入计划任务,每天凌晨3点进行备份(如下图)。
crontab -e    # 计划任务如何写 google一下
0 3 * * *  /usr/local/shell/web_backup.sh


14、如果想备份完成后自动关机,在脚本的最后增加一行 
shutdown -h now 
15、如果想需要备份的时候,备份机自动开机,并在设定的时间备份完成,然后自动关机。 
# 使用 网卡网络唤醒,我的本地机器电源没有ATX。所以不行!有的可以自己实验。
这里有网络唤醒的详细介绍:


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

要限制传输速度 不然流量过高.大陆那些鸟机房会认为被攻击. 然后断网...

加个限速参数就可以了 “--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/

更多信息可以参考 

 以上是rsync deamon 方式

rsync ssh 方式参考 

 

rsync 多对一布局 具体的请参考 

 

阅读(2668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~