Rsysnc实现VPS主机文件备份同步-Rsysnc安装、配置和操作实例

VPS主机   2016年01月25日 17:52  

Rsysnc实现VPS主机文件备份同步-Rsysnc安装、配置和操作实例

通常我们备份网站数据的做法,就是打包网站文件和MysqL数据库,然后下载到本地或者放在网盘中。一旦需要恢复网站数据时,重新将网盘或者本地的打包文件和MysqL数据库上传到网站服务器。这个网站备份的方法,对于中小型的博客网站基本上没有任何问题的。

但是大型的网站数据不仅数量上众多,并且由于数据处于动态的更新变化中,对于数据的备份要求更高的,加上本地带宽的限制不可能将服务器上的文件全部下载到本地再上传进行一系列的操作了。于是,很多人就想到了搭建一个网站的镜像服务器,同步更新服务器上的文件。

为你的网站服务器搭建一个用于同步和备份的镜像服务器,有两大好处:一是可以实现24小时不间断备份,如果有服务器集群的话可以极大地提升安全性能;二是确保网站不宕机,一旦某台服务器被攻击瘫痪了可以立即启用备用服务器,整个切换过程用户完全不知,保证了良好的用户体验。

当然要想实现上述效果,不能仅仅靠Rsysnc就可以实现,inotify+rsync是我们常用的搭配组合,这些我们都在以后的文章中逐步分享到。本文就来分享一下Rsysnc基本的使用方法,以及如何在VPS主机上配置和使用。更多的VPS主机实用工具可以看看:

Rsysnc实现VPS主机文件备份同步-Rsysnc安装、配置和操作实例

一、Rsysnc安装方法

1、Rsysnc官网:

  • 1、官方网站:https://rsync.samba.org/ftp/rsync/

2、VPS主机上安装Rsysnc命令:


apt-get install rsync #Ubuntu安装
yum install rsync  #centos安装
pacman -S rsync  #archlinux安装

//源码安装
wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz
tar xf rsync-3.1.2.tar.gz
cd  rsync-3.1.2
./configure --prefix=/usr/local/rsync
make
make install

3、Rsysnc启动服务:


rsync --daemon
#指定配置文件
/usr/bin/rsync --daemon  --config=/etc/rsyncd/rsyncd.conf

4、如果你的Rsysnc配置文件有问题,就会报错误。

Rsysnc安装出错

5、在VPS主机的防火墙中开启873端口。


iptables -I INPUT -p tcp -m state --state NEW  -m tcp --dport 873 -j ACCEPT

二、Rsysnc配置文件

1、Rsysnc配置文件主要有三个:

  • 1、rsyncd.conf 是rsync服务器主要配置文件。
  • 2、rsyncd.secrets是登录rsync服务器的密码文件。
  • 3、rsyncd.motd是定义rysnc 服务器信息的,也就是用户登录信息。

2、执行以下命令,创建rsyncd目录和建立这三个配置文件:


mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets
chmod 600 /etc/rsyncd/rsyncd.secrets #设置权限
touch /etc/rsyncd/rsyncd.motd

Rsysnc创建配置文件

3、接下来就是修改rsyncd.conf 、rsyncd.secrets 、rsyncd.motd文件了。首先rsyncd.conf 配置示例代码说明:


# Minimal configuration file for rsync daemon
# See rsync(1) and rsyncd.conf(5) man pages for help
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid  #进程写到 /var/run/rsyncd.pid 文件中
port = 873  #默认端口
address = 192.168.1.171 #指定服务器IP地址
#uid = nobody
#gid = nobody  
uid = root  
gid = root  
use chroot = yes
read only = no #只读 不让客户端上传文件到服务器上
#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0 #允许的IP 即白名单,中间用空格隔开
hosts deny=*
max connections = 5  #最大允许的连接数
motd file = /etc/rsyncd/rsyncd.motd #用户登录时会看到rsyncd.motd 中的信息
#This will give you a separate log file
log file = /var/log/rsync.log  #rsync 服务器的日志
#This will log every file transferred - up to 85,000+ per user, per sync
#transfer logging = yes
log format = %t %a %m %f %b  #日志格式
syslog facility = local3
timeout = 300
[freehao123] #模块名称  
path = /home  #同步路径
list=yes
ignore errors
auth users = root  #授权VPS登录用户,此用户必须是VPS已经存在的
secrets file = /etc/rsyncd/rsyncd.secrets #密码存储位置
comment = freehao123 home #注释 随便填写
exclude = beinan/  samba/ #排除上面的同步路径下的目录 用空格隔开   

4、rsyncd.secrets 就是存放密码的文件,设置格式如下:

root:128138148  #即用户名:密码

5、rsyncd.motd这是显示你连接rsyncd时的看到信息,不是很重要,可以自己随便写点。


+++++++++++++++++++++++++++
+ freehao123.com  rsync  2002-2007 +
+++++++++++++++++++++++++++

Rsysnc显示信息

三、Rsysnc使用操作方法

1、rsync 是一个功能非常强大的工具,它可以镜像保存整个目录树和文件系统,保持原来文件的权限、时间、软硬链接等,可以使用 rsh、s-s-h 方式来传输文件,当然也可以通过直接的 socket 连接。支持匿名传输,以方便进行网站镜象。

Rsysnc镜像

2、无论本地同步目录还是远程同步数据,首次运行时将会把全部文件拷贝一次,以后再运行时将只拷贝有变化的文件(对于新文件)或文件的变化部分(对于原有文件),即增量同步备份。先来看一下你的VPS是不是成功开启了873端口,使用命令:iptables -L -n。

Rsysnc查看防火墙

3、“推送”数据,即从主服务器主动将数据推送到备份服务器上,这里使用了SSH登录备份服务器,推送数据。命令:


rsync -avz -e ‘ssh -p1563′ /home/test/ root@192.168.1.150:/oracle/data/

4、-p1563是指定备份服务器端口,如果你的备份VPS的端口有修改的话,可以在这里指定。192.168.1.150是备份服务器的IP地址,/home/test/是主服务器的目录,后面就是备份存储的文件目录。

Rsysnc备份数据

5、“拉取”数据。换另一个VPS主机,按照上面的方法安装rsync ,然后执行以下命令,输入你刚刚设置的rsync 用户密码,即可实现文件同步备份。


rsync -avzP root@107.191.105.136::freehao123 freehao123k

6、上面的root就是用来登录的VPS用户,107.191.105.136是我的VPS主机服务器,freehao123这是模块名称,freehao123k是我搬瓦工VPS的目录,即用来存储备份的,该目录如果没有会自动创建。

Rsysnc开始同步

7、完成后,你就可以在备份VPS上看到同步的目录了。

Rsysnc看到同步的目录

8、上面我们使用了avzP参数,详细使用说明如下:


-a –archive归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r –recursive 对子目录以递归模式处理
-l –links 保留软链
-p –perms 保持文件权限
-t –times 保持文件时间信息
-g –group 保持文件属组信息
-o –owner 保持文件属主信息
-D –devices 保持设备文件信息
-z –compress 对备份的文件在传输时进行压缩处理
-P –partial 保留那些因故没有完全传输的文件,以是加快随后的再次传输
-v –verbose 详细模式输出
-e –rsh=COMMAND 指定替代rsh的shell程序
-u –update 仅仅进行更新,也就是跳过所有已经存在于DST,并且文件时间晚于要备份的文件。(不覆盖更新的文件)
–progress 显示备份过程
–delete 是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。

9、 想要保持服务器与备份服务器之间的文件目录保持一致,我们可以加入–delete 选项,这样当你的备份服务器上的文件目录与主服务器的文件目录存在不一致的文件时,就会直接删除。


rsync –avzP --delete root@107.191.105.136::freehao123 freehao123k

四、Rsysnc自动定时同步

1、通过上面我们已经知道如何使用rsync,利用VPS的定时工具我们可以实现rsync自动定时备份。首先,我们要在备份服务器上创建一个密码文件,这样rsync自动同步时就可以不需要输入密码。


touch rsync.password
chmod 600 rsync.password
echo "12345678"> rsync.password
rsync -avzP  --delete  --password-file=rsync.password  root@107.191.105.136::freehao123 freehao123k

2、 --password-file是用来指定密码文件路径的,执行:crontab -e,编辑定时任务,加入以下代码,即表示每天1点10分执行rsync同步备份任务。


10 1 * * * rsync -avzP  --delete  --password-file=rsync.password  root@107.191.105.136::freehao123 freehao123k

五、使用inotify-tools实现实时同步

1、上面还只是实现了自动定时同步,对于一些要求的高网站可能还需要实时同步,这里我们就可以利用上了inotify-tools了。你需要确保内核支持inotify,并安装inotify-tools和rsync。判断内核是否支持inotify方法有如下:


###确保内核版本高于2.6.13,低于则需重新编译内核###
root@mon11:~# uname -r
3.2.0-64-generic
###查看内核是否默认支持inotify—API###
root@mon11:~# ll /proc/sys/fs/inotify/
-rw-r--r-- 1 root root 0 Sep 18 18:06 max_queued_events
-rw-r--r-- 1 root root 0 Oct 20 10:24 max_user_instances
-rw-r--r-- 1 root root 0 Sep 18 18:06 max_user_watches
###相关说明
max_queued_events        表示调用inotify_init时分配给inotify instance中可排队的event的数目的最大值,超出这个值的事件被丢弃
max_user_instances       表示每一个real user ID可创建的inotify instatnces的数量上限
max_user_watches         表示每个inotify instatnces可监控的最大目录数量。如果监控的文件数目巨大,需要根据情况,适当增加此值的大小,例如:echo "9000000" > /proc/sys/fs/inotify/max_user_watches

inotify-tools安装

2、安装inotify-tools的方法有(在安装过程中如果遇到“configure: error: no acceptable C compiler found in $PATH”的错误,你需要安装gcc:yum install gcc):


wget http://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar xf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14/
./configure --prefix=/usr && make && su -c 'make install'

3、inotify-tools监控某一个文件目录的变化的命令是:


/usr/bin/inotifywait -mrq --timefmt '%Y/%m/%d-%H:%M:%S' --format '%T %w %f' \
 -e modify,delete,create,move,attrib /root/tmp/

4、上面的命令表示,持续监听/root/tmp目录及其子目录的文件变化,监听事件包括文件被修改、删除、创建、移动、属性更改,显示到屏幕。执行完上面的命令后,在/root/tmp下创建或修改文件都会有信息输出信息。

Rsysnc错误信息

5、如果遇到错误:/usr/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0: cannot open shared object file: No such file or directory,则采用下列方法解决:


32位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib/libinotifytools.so.0
64位系统:ln -s /usr/local/lib/libinotifytools.so.0 /usr/lib64/libinotifytools.so.0

6、通过inotifywait监控目标文件上的相应事件,并在事件触发时启动同步,操作命令如下:


root@mon11:/data/rsyncd# vim inotifyrsync.sh
#!/bin/bash
host=10.168.23.101
src=/home/git/
dst=Git_rsync
user=git
/usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib $src | while read files
do
/usr/bin/rsync -avzP --exclude".gitolite/logs/*" --progress --password-file=/etc/rsync.passwd $src $user@$host::$dst &>/dev/null && 
echo "${files} was rsynced" >> /data/rsyncd/rsync.log 2>&1
done
root@mon11:/data/rsyncd#chmod 755 inotifyrsync.sh
root@mon11:/data/rsyncd# bash inotifyrsync.sh &

六、Rsysnc使用小结

1、Rsysnc安装还是挺方便的,linux内核从2.6.13起便加入了Inotify支持,通过Inotify可以监控文件系统中添加、修改、移动等各种细微事件,Inotify-tools第三方软件就可以监控文件系统下文件的各种变化情况。

Rsysnc实时同步

2、Rsysnc同步备份的速度很快,如果是内网的话基本上不用考虑带宽的事情,Rsysnc与Inotify-tools搭配可以实现不同的VPS主机之间的数据同步镜像,对网站数据安全性要求的集群网站可以采用这种方式。

文章出自:免费资源部落 部分内容参考 Linux运维日志 Linux运维笔记 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

十个便宜VPS主机分享-VPS服务器建站和搭建应用服务体验
2014年六大免费VPS主机-免费VPS申请、使用和点评

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

在这个部落村庄里,已经有65 位神马家族成员冒出泡来在农场开始干活了
  • YYBlog 7

    前排.最近试用了一下Multcloud,确实好用.请问博主,multcloud是每月都有免费流量还是用完就没了?

    qi 回复:

    @YYBlog, 每月的免费流量。

    likebeta 回复:

    @qi, 是吗? 我好像10t流量, 但是用了一些, 几个月了没见到会重置

    qi 回复:

    @likebeta, 一直是减少了?这样也不够用呀。

    likebeta 回复:

    @qi, 对呀, 我一直显示用了一部分的流量

    qi 回复:

    @likebeta, 博主你的博客的评论加载不出来,无法评论。

    likebeta 回复:

    @qi, 那个评论是很慢, 你懂的

    qi 回复:

    @likebeta, 页面加载是挺快的。

    BYTEBA 回复:

    @YYBlog, 是一个账户的总流量,用完就要注册新号,或者升级账号。

    这是农场的第 1 块农田,部落批准 [YYBlog] 在[2016-1-25 18:01]开垦完成.
  • nr

    前排

    这是农场的第 2 块农田,部落批准 [nr] 在[2016-1-25 18:31]开垦完成.
  • nr 2

    确实好用

    这是农场的第 3 块农田,部落批准 [nr] 在[2016-1-25 18:32]开垦完成.
  • 拿个第三~ 网站都是一个一个的去备份~烦死了~ 试试这个!

    qi 回复:

    @TrojanSun, 这个备份方便一些,但是就是要两个VPS主机。

    TrojanSun 回复:

    @qi, 可以在本地安装一个linux虚拟机~ (网站内容小的话)

    qi 回复:

    @TrojanSun, 这样不错,直接使用一台Linux的电脑。

    不认识 回复:

    @TrojanSun, 每台服务器上写个备份脚本,自动打包scp到一台机器,这样在这台机器上就都能弄回来。如果这台机器再跑上dropbox或seafile,你电脑上装好它们的客户端,每天只需要打开电脑,就能自动同步过来。当然rsync也是可以的

    TrojanSun 回复:

    @不认识, 可以安装个虚拟机 主要是在vps安装Dropbox不会~

    快乐家园 回复:

    @TrojanSun, 百度 rsync for windows

    不认识 回复:

    @快乐家园, +1

    qi 回复:

    @快乐家园, 这是个软件,我也在用。

    TrojanSun 回复:

    @qi, 我准备今天晚上搞搞

    TrojanSun 回复:

    @快乐家园, 非常感谢~

    Charisma 回复:

    @TrojanSun, 这有个dropbox参考
    https://doufu.ru/backup-vps-to-dropbox.html

    TrojanSun 回复:

    @Charisma, :lol: 要定时去清理 你的DP多大!

    Charisma 回复:

    @TrojanSun, 我的备份文件小,就1M不到,脚步自动清理两个月之前的

    qi 回复:

    @Charisma, 我之前有用过,还不错。

    这是农场的第 4 块农田,部落批准 [TrojanSun] 在[2016-1-25 20:36]开垦完成.
  • 企业常用这东西,尤其是企业内网配合%,速度快的飞起。

    这是农场的第 5 块农田,部落批准 [不认识] 在[2016-1-25 21:00]开垦完成.
  • Kung 23

    低调路过。

    这是农场的第 6 块农田,部落批准 [Kung] 在[2016-1-26 10:50]开垦完成.
  • uu

    操作起来还是好麻烦呀。

    这是农场的第 7 块农田,部落批准 [uu] 在[2016-1-26 13:06]开垦完成.
  • ueu2

    不用配置直接使用ss登录就可以备份吧。

    这是农场的第 8 块农田,部落批准 [ueu2] 在[2016-1-26 13:13]开垦完成.
  • 正想研究这个呢,文章出来的正是时候。

    这是农场的第 9 块农田,部落批准 [初行博客] 在[2016-1-26 13:17]开垦完成.
  • ueu

    Rsysnc功能很强大。

    这是农场的第 10 块农田,部落批准 [ueu] 在[2016-1-26 20:07]开垦完成.
  • jj

    我都是手动备份的。

    这是农场的第 11 块农田,部落批准 [jj] 在[2016-1-26 20:15]开垦完成.
  • 小z 7

    bitsync也值得一试

    qi 回复:

    @小z, 这个可以直接由Linux同步到Windows主机上吗?

    这是农场的第 12 块农田,部落批准 [小z] 在[2016-1-27 11:47]开垦完成.
  • 站长大大能否出一篇有关于Conoha的“对象存储”使用教程?如何上传文件、删除以及分享文件?它家的对象存储非常实惠~比阿里云七牛什么的更加划算~就是操作很麻烦~要运用到Swift~代码小白一个~作为贵站的粉丝希望大大能满足小弟的请求~感激不尽

    qi 回复:

    @电视包装酷, 这个日本的不是速度慢吗?貌似用的人比较少,我去试用一下看看。

    电视包装酷 回复:

    @qi, 如果拿linode来对比~那确实Conoha的速度不够它好~但是拿国外的来比~它的速度我觉得很满足了~尤其是看到它家的对象存储~简直就是良心~几乎就是买个容量就行~流量什么的都不用考虑~50元100G的容量。。。就是使用起来有点麻烦~希望站长能指导一下~万分感谢

    qi 回复:

    @电视包装酷, 好,之前没有关注这个存储服务,我就去看看。

    iii 回复:

    @qi, conoha的133.130段改成绕道NTT了,现在ping200多ms,之前因为是又便宜还是无限量的,不过现在绕道了还是要考虑的,其他的IP段不知道。看来国人已经玩坏了。 :sad:

    qi 回复:

    @iii, 因为便宜,大家都往那里购买VPS,线路的质量都慢慢不行了。

    这是农场的第 13 块农田,部落批准 [电视包装酷] 在[2016-1-28 01:40]开垦完成.
  • ixinshang 7

    一直想用,没测试成功。。。

    qi 回复:

    @ixinshang, 最简单的,可以尝试一下那个直接使用RSysnc备份文件,不需要配置什么的。

    SaFly.ORG 回复:

    @qi, 已投稿至邮箱 :)

    qi 回复:

    @SaFly.ORG, 已经收到,今天晚上发出来。

    SaFly.ORG 回复:

    @qi, 十分感谢 :oops:

    这是农场的第 14 块农田,部落批准 [ixinshang] 在[2016-1-29 15:42]开垦完成.
  • MB

    大虾,可否推荐一些建站内容给新手?本人仅会HTML、CSS,其它都不会。 :roll:

    qi 回复:

    @MB, 建站内容太丰富了,有没有具体一点的?

    MB 回复:

    @qi, 如何把自己的设计的网页上传到网上?怎么说呢,就是把本地的网页变成一个网站的东西。还请指点。

    qi 回复:

    @MB, 如果知道Html和CSs,那么可以找一个虚拟主机,然后将文件上传到主机上就可以了。

    这是农场的第 15 块农田,部落批准 [MB] 在[2016-2-15 13:43]开垦完成.
  • 这个装在源机还是备机?

    qi 回复:

    @吾爱互联, 在备机上,类似于拉取一样。

    这是农场的第 16 块农田,部落批准 [吾爱互联] 在[2016-4-1 13:41]开垦完成.
  • 不错,网站不错

    这是农场的第 17 块农田,部落批准 [拽拽软件] 在[2016-4-23 21:20]开垦完成.
  • 不错啊作者支持你你做的不粗

    这是农场的第 18 块农田,部落批准 [拽拽软件] 在[2016-4-23 21:21]开垦完成.
  • ixinshang 7

    qi,我的服务器是密匙验证,但是验证的时候,还需要输入一次密码,能用这个不?

    qi 回复:

    @ixinshang, 可以,在同步时你直接输入密码,就可以同步传输了。

    ixinshang 回复:

    @qi, 想用cron来完成定时备份。 这个怎么输入密码?

    qi 回复:

    @ixinshang, 这个。。恐怕不行。想要定时备份的话,只能配置好密钥登录,在B服务器上配置上A服务器的密钥,连接时设置好密钥路径,这样就可以了。

    ixinshang 回复:

    @qi, 估计,只有想法新建一个不需要输入密码的来备份了。

    qi 回复:

    @ixinshang, 阿里云VPS有内网,直接使用内网IP,就不需要输入密码了。

    ixinshang 回复:

    @qi, 我是自己的服务器。。

    qi 回复:

    @ixinshang, 哦,那只能是自己配置局域网了。

    ixinshang 回复:

    @qi, 主要是想备份一下数据库。

    这是农场的第 19 块农田,部落批准 [ixinshang] 在[2016-6-2 16:10]开垦完成.
  • LingYue

    配置里 address = 192.168.1.171 #指定服务器IP地址
    这个 IP 地址是什么地址?是 VPS 的地址吗?

    qi 回复:

    @LingYue, 是的,也就是你要备份目标VPS。

    这是农场的第 20 块农田,部落批准 [LingYue] 在[2016-8-9 12:31]开垦完成.
看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


(Ctrl + Enter提交)   

部落快速搜索栏

热门点击排行榜

网站导航栏

X
返回顶部