使用情况一:liunx做客户端,ip:70.xx.xx.xx,windows做服务端,ip:123.xx.xx.xx
1,首先检查Linux是否安装rsync
rpm -qa|grep rsync
如果安装了,会显示rsync的版本号,没安装会什么都没有,centos系统运行以下命令安装
yum install rsync
Linux做客户端的话,只要安装了rsync即可,不需要配置rsync.conf配置文件。
2,给windows电脑安装cwRsync服务器端:http://soft.huweishen.com/soft/308.html 这个是下载地址!
下载软件一路next即可,到达一个输入帐号密码的地方。这个帐号密码是rsync登陆windows系统的账号密码,这个帐号密码记录下来,后面配置备用。假设我设置的帐号密码为:haha haha123@
3,修改windows机器服务端的配置文件,配置文件一般的系统路径为:
C:\Program Files\ICW\rsyncd.conf
64位系统配置文件路径为
C:\Program Files (x86)\ICW\rsyncd.conf
rsyncd.conf具体配置为:(在复制配置的时候把#以及后面的文章要删除,不然,配置文件不生效)
use chroot = false
strict modes = false
hosts allow = 70.xx.xx.xx #这个默认为* ,但是为了安全着想,我们一般只填同步服务器的ip,多个ip英文逗号隔开
log file = rsyncd.log
port = 873
uid=0
gid=0
# Module definitions
# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
#
[www] #这个模块名可以随意命名
path = /cygdrive/d/www #要同步的文件路径,代表d:\www目录
read only = false
transfer logging = yes
list = no
hosts allow = 70.xx.xx.xx #这个默认为* ,但是为了安全着想,我们一般只填同步服务器的ip,多个ip英文逗号隔开
auth users = haha #rsync用户 仅这个账户可以同步该配置下文件
secrets file = etc/rsyncd.secrets #rsync登陆用户文件 记录rsync时需要输入的账号密码
4,创建账户文件rsyncd.secrets ,路径C:\Program Files\ICW\etc 64位系统路径:C:\Program Files (x86)\ICW\etc
文件命名必须和配置文件中secrets file = etc/rsyncd.secrets相同,这里文件名为:rsyncd.secrets
内容为 账户:密码
例如本文:
haha:haha123@
5,配置完成,启动服务
服务器管理器-工具-服务,其他版本的windows可以用控制面板-管理工具-服务
找到服务rsyncserver (如果没有这个服务 应该是你用户名密码那你输入有问题 卸载了重新装一次)
将rsyncserver设置为自动启动 并启动服务。
6,Linux客户端添加一个密码文件即可,如果有防火墙,到防火墙里开启873端口
cd /etc
vi rsyncd_test.scrt #里面输入在服务端设置的密码,haha123@ 注意这里不要帐号只填密码即可
把这个文件设置为600的权限
chmod 600 rsyncd_test.scrt
防火墙开启873端口
vi /etc/sysconfig/iptables
添加下面的内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
重启防火墙使配置生效
/etc/init.d/iptables restart
7,一切准备就绪,在windows下cmd里面输入
netstat -ano #查看端口873是否正常开启。
在linux输入一下命令
telnet 123.xx.xx.xx 873
联通状态为:
Trying 123.xx.xx.xx...
Connected to 123.xx.xx.xx(123.xx.xx.xx).
Escape character is '^]'.
@RSYNCD:30.0
反之就是未联通,经过测试一般出现连接步同的情况,都是windows有开启防火墙,关闭防火墙,重启rsync服务即可
8,同步命令,因为windows为服务端,所以执行同步命令只能到linux客户端执行
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd_test.scrt haha@123.xx.xx.xx::www /tmp/test1
此命令是从windows服务端同步数据到linux客户端tmp/test1目录下。
rsync -vzrtopg --progress --delete --password-file=/etc/rsyncd_test.scrt /tmp/test1 haha@123.xx.xx.xx::www
此命令是从linux客户端tmp/test1目录下同步数据到windows服务端(同步到windows[www] 这个模块指定的文件夹
path = /cygdrive/d/www )
9,具体在使用过程中,肯定有各种意外的情况,这个时候就借助日志文件百度即可
日志文件位置:
C:\Program Files\ICW\rsyncd.log #普通windows系统
C:\Program Files (x86)\ICW\rsyncd.log #windows64系统
使用情况二:liunx做服务器端,windows做客户端
1,首先检查Linux是否安装rsync
rpm -qa|grep rsync
如果安装了,会显示rsync的版本号,没安装会什么都没有,centos系统运行以下命令安装
yum install rsync
2,由于Linux为服务端,所以我们要配置rsyncd.conf
cd /etc
vi rsyncd.conf
rsyncd.conf具体配置为:(在复制配置的时候把#以及后面的文章要删除,不然,配置文件不生效)
uid = nobody
gid = nobody
use chroot = no
max connections = 200
timeout = 600
pid file= /var/run/rsyncd.pid
lock file = /home/tmp/rsyncd.lock #rsyncd.lock跟rsyncd.log路径可以自定义,tmp文件夹自己建,权限设置为777
log file = /home/tmp/rsyncd.log #日志如果经常同步要记得清理,否则如果同步数据量大的花,日志文件大的惊人。
hosts allow = 123.xx.xx.xx,xx.xx.xx.xx #默认可以填*,为了安全我们填要同步的ip,多个ip用英文逗号分隔
port = 873
[www]
path = /home/wwwroot #自定义要同步的路径
read only = false
transfer logging = yes
list = no
hosts allow = 123.xx.xx.xx
uid = root
gid = root
auth users = haha #这个haha是下面rsyncd.secrets里面设置的,并不需要在linux系统里添加haha帐号
secrets file = /etc/rsyncd.secrets
3,接着我们设置rsyncd.secrets文件,如果有防火墙还得在防火墙添加端口
cd /etc
vi rsyncd.secrets
rsyncd.secrets具体内容就为自己自定义用来同步的帐号密码
haha:haha123@
权限记得设置为600,否则同步时会出问题
chmod 600 rsyncd.secrets
查看,873端口是否开启。
netstat -an | grep 873
防火墙开启873端口
vi /etc/sysconfig/iptables
添加下面的内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT
重启防火墙使配置生效
/etc/init.d/iptables restart
kill掉rsync,再以进程的方式运行rsync:
cat /var/run/rsyncd.pid | xargs kill -9 && rm -rf /var/run/rsyncd.pid #killrsync并移除rsyncd.pid文件
kill -9 $(pgrep rsync) #清掉进程
/usr/bin/rsync --daemon #以进程的方式启动rsync服务
4,windows客户端,我们安装rsync windows版的客户端 cwRsync 4.1.0客户端:http://soft.huweishen.com/soft/307.html
下载软件一路next即可,到达一个输入帐号密码的地方。这个帐号密码是rsync登陆windows系统的账号密码,这个帐号密码记录下来,后面配置备用。假设我设置的帐号密码为:haha haha123@
安装之后,软件路径为:
C:\Program Files\cwRsync\bin #普通windows系统路径
C:\Program Files (x86)\cwRsync\bin #windows 64位路径
5,windows客户端,我们要建立一个密码文件,用来同步时需要用到,当然你也可以不设置,直接在输入同步命令的时候,手动输入密码也是可以的。
我就在c盘根目录建了个copy的目录,在里面建了个rsync.pass文件,文件里只填了服务端设置的密码,注意只要填密码即可,步需要填用户名。
rsync.pass 内容为:
haha123@
6,配置完成,启动服务
服务器管理器-工具-服务,其他版本的windows可以用控制面板-管理工具-服务
找到服务rsyncserver (如果没有这个服务 应该是你用户名密码那你输入有问题 卸载了重新装一次)
将rsyncserver设置为自动启动 并启动服务。
7,这个步骤是关键步骤,如果没设置好,你运行同步命令的时候还是会要输入密码,即使你加了–password-file 这个参数,并且密码文件也存在。进入运行,输入cmd
cd C:\Program Files\cwRsync\bin #64位系统命令为:cd C:\Program Files (x86)\cwRsync\bin
chmod -c 600 /cygdrive/c/copy/rsync.pass #/cygdrive/c/意思就是c盘目录
chown administrator /cygdrive/c/copy/rsync.pass #这个命令很多人执行不成功,因为默认安装的客户端C:\Program Files\cwRsync\bin这个文件夹里没有chown.exe这个文件,我是从windows服务端版的rsync bin目录下拷贝的。
8,一切准备就绪,在windows下cmd里面输入
netstat -ano #查看端口873是否正常开启。
在linux输入以下命令
telnet 123.xx.xx.xx 873
联通状态为:
Trying 123.xx.xx.xx...
Connected to 123.xx.xx.xx(123.xx.xx.xx).
Escape character is '^]'.
@RSYNCD:30.0
反之就是未联通,经过测试一般出现连接步同的情况,都是windows有开启防火墙,关闭防火墙,重启rsync服务即可
9,开始同步,因为windows为客户端,linux为服务端,我们执行命令一般在客户端执行。
同样要先进cmd,然后cd C:\Program Files\cwRsync\bin切换到rsync安装目录
rsync -vzrtopg --progress --delete --password-file=/cygdrive/c/copy/rsync.pass haha@70.xx.xx.xx::www /cygdrive/e/abc/
该命令是从linux服务器同步数据到windows的e盘的abc目录下
rsync -vzrtopg --progress --delete --password-file=/cygdrive/c/copy/rsync.pass /cygdrive/e/abc/ haha@70.xx.xx.xx::www
反过来使用,这个命令就是从windows的e盘abc目录同步文件到linux服务端。(同步到linux[www]模块制定的文件夹 path = /home/wwwroot)
10,具体在使用过程中,如果出现错误,日志文件在linux服务端log file = /home/tmp/rsyncd.log,查看该文件即可,把相关错位到百度搜索,一般可以解决掉。
rsync相关命令:
rsync kill以及启动
cat /var/run/rsyncd.pid | xargs kill -9 && rm -rf /var/run/rsyncd.pid #killrsync并移除rsyncd.pid文件
kill -9 $(pgrep rsync) #清掉进程
/usr/bin/rsync --daemon #以进程的方式启动rsync服务
echo ''>/home/tmp/rsyncd.log #linux清除日志 可以写成shell,在crontab里定时执行
-c, --checksum #参数c,打开校验开关,强制对文件传输进行校验
--size-only #仅比较文件大小,可以提高同步速度
rsync大文件续传命令 #linux客户端,windows服务端 (linux上执行)
rsync --archive --recursive --compress --partial --progress --append --password-file=/etc/rsyncd_test.scrt /home/wwwroot/yasuobao.tar.gz haha@123.xx.xx.xx::www #linux客户端,windows服务端
rsync大文件续传命令 #windows客户端,linux服务端 (windows上执行)
rsync --archive --recursive --compress --partial --progress --append --password-file=/cygdrive/c/copy/rsync.pass /cygdrive/e/abc/yasuobao.gz haha@70.xx.xx.xx::www #windows客户端,linux服务端
rsync同步时排除文件命令,#windows客户端,linux服务端 (windows上执行)
rsync -vzrtopg --progress --exclude-from=/cygdrive/c/copy/exclude.txt --password-file=/cygdrive/c/copy/rsync.pass /cygdrive/d/abc/ haha@70.xx.xx.xx::www #windows客户端,linux服务端
rsync同步时排除文件命令,#linux客户端,windows服务端 (linux上执行)
rsync -vzrtopg --progress --exclude-from=/home/exclude.txt --password-file=/etc/rsyncd_test.scrt /home/wwwroot/ haha@123.xx.xx.xx::www #linux客户端,windows服务端
rsync定时同步
1,如果是用windows做客户端定时同步,只需把执行命令复制到bat文件,修改为:
@echo off
"C:\Program Files (x86)\cwRsync\bin\rsync.exe" -vzrtopg --progress --exclude-from=/cygdrive/c/copy/exclude.txt --password-file=/cygdrive/c/copy/rsync.pass /cygdrive/d/abc/ haha@70.xx.xx.xx::www
然后在,windows的计划任务里,添加这个bat定时执行即可,主要要选择 最高权限执行。
2,如果是用linux做客户端定时同步,只需把执行命令复制到sh文件。
#!/bin/bash
rsync -vzrtopg --progress --exclude-from=/home/exclude.txt --password-file=/etc/rsyncd_test.scrt /home/wwwroot/ haha@123.xx.xx.xx::www
然后编辑crontab,设置定时执行
rsync开机启动设置:在/etc/init.d/下新建rsync文件复制下面代码进去,把DAEMON,CONFIGFILE,PIDFILE三个参数改为自己在rsyncd.conf的设置路径。
#!/bin/sh
#
# php-fpm - this script starts and stops the rsync daemin
#
# chkconfig: - 85 15
# processname: rsync
# config: /etc/rsyncd.conf
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="rsync daemon"
NAME=rsync
DAEMON=/usr/bin/$NAME
CONFIGFILE=/etc/rsyncd.conf
PIDFILE=/var/run/rsyncd.pid
SCRIPTNAME=/etc/init.d/$NAME
# If the daemon file is not found, terminate the script.
test -x $DAEMON || exit 0
d_start(){
$DAEMON -y $CONFIGFILE || echo -n " already running"
}
d_stop(){
kill -QUIT `cat $PIDFILE` || echo -n " no running"
}
d_reload(){
kill -HUP `cat $PIDFILE` || echo -n " could not reload"
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
reload)
echo -n "Reloading $DESC configuration..."
d_reload
echo "Reloaded."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
# Sleep for two seconds before starting again, this should give the nginx daemon some time to perform a graceful stop
sleep 2
d_start
echo "."
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload)" >&2
exit 3
;;
esac
exit 0
保存好 /etc/init.d/rsync文件后,执行以下命令:
chmod 775 /etc/init.d/rsync
chkconfig --add rsync
chkconfig rsync on
/etc/init.d/rsync start #命令启动rsync
/etc/init.d/rsync stop #命令停止rsync
/etc/init.d/rsync restart #命令重启rsync
or
service rsync start #命令启动rsync
service rsync stop #命令停止rsync
service rsync restart #命令重启rsync