天天看点

rsync同步服务安装配置及脚本使用

Rsync是Unix/Linux下的一款应用软件,利用它可以使多台服务器数据保持同步一致性,第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。

RSYNC安装

实验两台虚拟机:服务端192.168.2.222,客户端192.168.2.183

便于实验,我这里采用yum安装方式:yum install rsync -y

我这里自定义rsync配置目录mkdir /home/lijq/.rsync/ -p  ; 创建配置文件添加以下内容vi rsyncd.conf;

 uid = nobody

gid = nobody

use chroot = no

max connections = 30

pid file = /home/lijq/.rsync/rsyncd.pid

lock file = /home/lijq/.rsync/rsyncd.lock

log file = /home/lijq/.rsync/rsyncd.log

transfer logging = yes

log format = %t %a %m %f %b

syslog facility = local3

timeout = 300

[test1]

read only = no

path = /data/www

comment = www

auth users = test

secrets file = /home/lijq/.rsync/rsync.pas

hosts allow = 192.168.2.183 

 cd /home/lijq/.rsync;创建rsync.pas密钥文件test:123456 并给权限chmod 666 rsync.pas

然后启动服务,我这里是自定义配置路径和端口所有启动命令为下:

/usr/bin/rsync --daemon --config=/home/lijq/.rsync/rsyncd.conf --port 7001

使用ps -ef | grep rsync可以查看服务启动情况

客户端配置,只需要在cd /home/lijq/.rsync/下创建rsync.pas密码文件内容123456并赋予600权限即可

然后创建服务端的同步目录,上面配置文件定义的是/data/www

上面命令是客户端同步服务器文件里面的内容,,/root/lijq为客户端目录可以自己定义,端口是我自己定义的,test1是我服务端定义的同步模块名称

如果报错@ERROR: auth failed on module test1请检查秘钥配置文件,如果报错:rsync: failed to connect to 192.168.2.222: No route to host (113)请检查防火墙和selinux,博主深受其害

同步命令执行后,会发现,服务器上的/data/www/下面的文件都同步到了客户端/root/lijq下面了,,done

 二.上面的客户端执行的命令同步是服务器上的目录文件同步到客户端来相当于备份,而企业中很多都是从客户端更新数据到服务端故此:在客户端可以执行下列命令就好了

如果报错rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]请检查服务端目录权限其他用户要有写的权限哦,done

 脚本实现同步:这里的脚本是客户端数据同步到服务端的,其他的可以自己定义:

<code> </code><code>#!/bin/bash</code>

<code>#use for : sh 33.sh test server</code>

<code>SYSUSER=</code><code>test</code>

<code>export</code> <code>MOKUAI=test1</code>

<code>export</code> <code>PORT=7001</code>

<code>SRC_DIR=</code><code>/root/lijq/</code>

<code>SERVERIP=192.168.2.222</code>

<code>SERVERNO=$1</code>

<code>case</code> <code>"$2"</code> <code>in</code>

<code>test</code><code>)</code>

<code>echo</code> <code>${rsyncsource%/*}</code>

<code>;;</code>

<code>server)</code>

<code>/usr/bin/rsync</code> <code>-avzP --progress --delete --password-</code><code>file</code><code>=rsyncd1.pas --port=${PORT $SRC_DIR $SYSUSER@$SERVERIP::$MOKUA</code>

<code>I</code>

<code>esac</code>

 done

后续研究持续更新

<a href="http://liubao0312.blog.51cto.com/2213529/1677586" target="_blank">http://liubao0312.blog.51cto.com/2213529/1677586</a>

本文转自 Anonymous123 51CTO博客,原文链接:http://blog.51cto.com/woshitieren/1679226

继续阅读