【Linux 基础篇】之 rsync

来源:互联网 发布:管家婆 远程数据库 编辑:程序博客网 时间:2024/06/05 02:15

【1】rsync介绍

   Rsync(RemoteSynchronize) 是一个远程资料同步工具,可通过LAN/WAN快速同步多台主机,Rsync使用所为的“Rsync演算法”来使本地主机和远程主机之间达到同步,这个演算法并不是每次都整份传送,它只传送两台计算机之间所备份的资料不同的部分,因此速度相当快。

   Rsync的优点如下:

1、可以镜像保存整个目录树和文件系统。

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为任意组

usechroot = no

如果"usechroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。这样做的原因是实现额外的安全防护,但是缺点是需要以root权限,并且不能备份指向外部的符号连接所指向的目录文件。默认情况下chroot值为true.但是这个一般不需要,我选择no或false

list= no

不允许列清单

maxconnections = 200 

最大连接数

timeout= 600 

覆盖客户指定的IP超时时间,也就是说rsync服务器不会永远等待一个崩溃的客户端。

pidfile= /var/run/rsyncd.pid  

pid文件的存放位置

lockfile = /var/run/rsync.lock  

锁文件的存放位置

logfile = /var/log/rsyncd.log   

日志文件的存放位置

[backup] 

这里是认证模块名,即跟samba语法一样,是对外公布的名字

path= /backup/

这里是参与同步的目录

ignoreerrors  

可以忽略一些无关的IO错误

readonly = no

允许可读可写

list= no

不允许列清单

hostsallow = 192.168.1.0/255.255.255.0

这里跟samba的语法是一样的,只允许192.168.21.0/24的网段进行同步,拒绝其它一切

authusers = test 

认证的用户名

secretsfile = /etc/rsyncd.password  

密码文件存放地址

注意:

1、[backup]  认证模块名和 path = /backup/ 参与同步的目录

这里的path 大家要记好了,这里不要随便的一设置就直接完事,要知道这里是认证模块的,以后从客户机备份的数据会存储在这里。

2、auth users = redhat 认证的用户名 

这个名字是服务器端实实在在存在用户,大家不要直接跟步骤走却忽略了这点。如果服务器端少了这个的话我估计你的数据同步就实现不了,大家要谨记。

3、path = /backup/ 参与同步的目录

这个需要稍后自己要在根目录下自己建

cd /

mkdir backup

chmod –R 777 /backup

echo “test:test” > /etc/rsync.password

(这里我设置的是用户名和密码一致)

为了安全起见,我设置他的权限为600

chmod 600 /etc/rsync.password

 

启动配置

[root@testrsync-3.0.4]# vim /etc/xinetd.d/rsync 

配置rsync server

vi /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
Stoppingxinetd:                                          [  OK  ]
Startingxinetd:                                          [  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

测试:

rsync -vzrtop --delete /home/ce test@192.168.0.206::backup--password-file=/etc/rsyncd.password

从服务器上下载文件

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

 

3rsync客户端方式

常用:rsync -av

下载:rsync [参数] 远程文件(远程路径)  本地目录 

上传:rsync [参数] 本地文件                 远程目录

rsync常用参数

如果不需要交互式的操作,rsync平时也可以像scp那样工作,下列为常用rsync参数。


-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中制定模式匹配的文件

 

0 0
原创粉丝点击