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