【教程主题】:rsynclinux
【课程录制】: 创E算法
【主要内容】sql
【1】 rsync介绍vim
Rsync(Remote Synchronize) 是一个远程资料同步工具,可经过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并非每次都整份传送,它只传送两台计算机之间所备份的资料不一样的部分,所以速度至关快。安全
Rsync的优势以下:服务器
1、能够镜像保存整个目录树和文件系统。socket
2、能够很容易的作到保持原来文件的许可权、时间、软连接等。工具
3、无须特使许可权便可安装。测试
4、拥有优化的流程,文件传输效率高。优化
5、可使用Rsh、SSH等方式来传输文件,固然也能够直接经过Socket链接。
6、支持匿名传输。
另外,与SCP相比,传输速度不是一个层次级的。咱们在局域网时常常用Rsync和SCP传输大量Mysql数据,发现Rsync至少比Scp快20倍以上,因此你们若是须要在Linux/Unix服务器之间互传海量资料,Rsync是很是好的选择。
【2】 rsync服务端方式
首先检查rsync是否安装:
rpm –q rsync
rsync-2.6.8-3.1
说明rsync已安装,若是提示出现 package rsync is not installed 则说明这个软件报没有安装你们可使用yum进行安装
另外,关闭防火墙和SElinux,由于是内网中传输,因此这些不必
service iptables stop && chkconfig iptables off
setenforce 0
配置文件/etc/rsyncd.conf。这个文件是本身定义的,并非系统建立的,固然你也能够叫不一样的名字,后面再写上详细注释。
uid = nobody
gid = nobody
user chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
[backup]
path=/backup/
ignore errors
read only = no
list = no
hosts allow = 192.168.0.0/255.255.255.0
auth users = test
secrets file = /etc/rsyncd.password
注释:
uid = nobody
进行备份的用户,nobody 为任何用户
gid = nobody
进行备份的组,nobody为任意组
use chroot = no
若是"use chroot"指定为true,那么rsync在传输文件之前首先chroot到path参数所指定的目录下。这样作的缘由是实现额外的安全防御,可是缺点是须要以root权限,而且不能备份指向外部的符号链接所指向的目录文件。默认状况下chroot值为true.可是这个通常不须要,我选择no或false
list = no
不容许列清单
max connections = 200
最大链接数
timeout = 600
覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。
pidfile = /var/run/rsyncd.pid
pid文件的存放位置
lock file = /var/run/rsync.lock
锁文件的存放位置
log file = /var/log/rsyncd.log
日志文件的存放位置
[backup]
这里是认证模块名,即跟samba语法同样,是对外公布的名字
path = /backup/
这里是参与同步的目录
ignore errors
能够忽略一些无关的IO错误
read only = no
容许可读可写
list = no
不容许列清单
hosts allow = 192.168.1.0/255.255.255.0
这里跟samba的语法是同样的,只容许192.168.21.0/24的网段进行同步,拒绝其它一切
auth users = test
认证的用户名
secrets file = /etc/rsyncd.password
密码文件存放地址
注意:
一、[backup] 认证模块名和 path = /backup/ 参与同步的目录
这里的path 你们要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,之后从客户机备份的数据会存储在这里。
二、auth users = redhat 认证的用户名
这个名字是服务器端实实在在存在用户,你们不要直接跟步骤走却忽略了这点。若是服务器端少了这个的话我估计你的数据同步就实现不了,你们要谨记。
三、path = /backup/ 参与同步的目录
这个须要稍后本身要在根目录下本身建
cd /
mkdir backup
chmod –R 777 /backup
echo “test:test” > /etc/rsync.password
(这里我设置的是用户名和密码一致)
为了安全起见,我设置他的权限为600
chmod 600 /etc/rsync.password
启动配置
[root@test rsync-3.0.4]# vim /etc/xinetd.d/rsync
配置rsync servervi /etc/xinetd.d/rsync
将disable=yes改成no
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
[root@test home]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
若是xinetd没有的话,须要安装一下
[root@test home]# yum -y install xinetd
RSYNC服务端启动的两种方法:
启动rsync服务端(独立启动)
[root@test home]# /usr/bin/rsync --daemon on
启动rsync服务端 (有xinetd超级进程启动)
[root@test home]# /etc/init.d/xinetd reload
配置rsync自动启动
[root@test etc]# chkconfig rsync on
[root@test etc]# chkconfig rsync --list
rsync
加入rc.local
在各类操做系统中,rc文件存放位置不尽相同,能够修改使系统启动时把rsync --daemon加载进去。
[root@test home]# vi /etc/rc.local
/usr/local/rsync –daemon #加入一行
客户端配置:
echo “test” > /etc/rsyncd.password
这里仅仅只须要密码,不须要用户了,省得要同步时还要手动互动
chmod 600 /etc/rsync.password
测试:下面delete表示删除目标存在而源目录不存在的文件的命令
rsync -vzrtop --delete /home/ce test@192.168.0.206::backup --password-file=/etc/rsyncd.password
从服务器上下载文件a:打包,v:详细信息,z压缩
rsync -avz --password-file=/etc/rsyncd.password test@192.168.0.206::backup /home/
从本地上传到服务器上去
rsync -avz --password-file=/etc/rsyncd.password /home test@192.168.0.206::backup
【3】rsync客户端方式
经常使用:rsync -av
下载:rsync [参数] 远程文件(远程路径) 本地目录
上传:rsync [参数] 本地文件 远程目录
rsync经常使用参数
若是不须要交互式的操做,rsync平时也能够像scp那样工做,下列为经常使用rsync参数。
例子: rsync -av test@192.168.1.122:/home/test/3.txt .
表示将服务192.168.1.122的/home/test/3.txt文件复制到本客户度的当前目录其中“.”表示当前目录
-a, --archive 归档模式,表示以递归方式传输文件,并保持全部文件属性,等于-rlptgoD
-v --verbose:详细模式输出
-r --recursive:对子目录以返回模式处理。
-p --perms:保持文件许可权
-o --owner:保持文件属主信息
-g --group:保持文件组信息
-t --times:保持文件时间信息
--delete:删除哪些DST中存在而SRC中不存在的文件或目录
--delete-excluded:一样删除接收端哪些该选项制定排出的文件
-z --compress:对备份的文件在传输时进行压缩处理
--exclude=PATTERN:制定排除不须要传输的文件
--include=PATTERN:制定不排除须要传输的文件
--exclude-from=FILE:排除FILE中制定模式的文件
--include-from=FILE:不排除FILE中制定模式匹配的文件
----------------------------------------------------------------------
说明:从理论上将这个是行的通的,由于任何服务器均可以远程链接的,那么只要知道了ip,用户名,密码,就能够进入到服务器,就能够查看服务器中的文件
这个固然就能够拷贝下来,而后另外一台服务器又能登陆,因此最原始的就能够将源服务器的文件拷贝到本地,而后上传到另外一台服务器,rsync,至关于省掉中间一步
就是直接将源服务器的文件传到另外一台服务器,固然须要配置下,有两种方式
第一种:服务器方式,须要配置一台服务器做为服务器(伪装看作服务器,其实两个都是服务器),而后配置一个bakup文件,配置一个用户名和密码,专门用来被远程链接
若是说的专业点,backup就是所谓的认证模块,用户名和密码文件就是所谓的认证文件,而后客户端,也须要配置一个密钥就是源服务器对应的用户的密码,而后在传输的过程
中就设置下用户,ip参数,就至关于源服务器的用户名,密码,ip都有了,因此就能够传输了