安装:
Ubuntu
sudo apt-get install rsync
Cent os
yum install rsync
配置:(建立三个文件,这里我放在/etc/rsyncy/,分别是rsyncd.conf,rsyncd.secrets,rsyncd.motd)
#chmod 600 /etc/rsyncd/rsyncd.secrets //首先将rsyncd.secrets权限设置为root,否则会报错。
#vim /etc/rsyncd/rsyncd.conf //编辑rsyncd.conf文件
uid = root/nobody
gid = root/nobody
use chroot = no
timeout = 300
port = 873
max connections = 30
pid file = /var/log/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
[backup] //模块名
path = 要同步的目录
comment =test
read only = no
write only = no
list = no
ignore errors
hosts allow = 192.168.1.0/24
hosts deny = *
auth users = root
secrets file=/etc/rsyncd/rsyncd.secrets
PS:这里需要说明一下,配置这些东西,主要是在服务器端,客户端不用这样弄的,下面会说到客户端的配置方式。
配置rsyncd.secrets
#vim /etc/rsyncd/rsyncd.secrets //编辑rsyncd.secrets文件
root:密码 //这里的root,要和前面配置rsyncd.conf里的auth users一样,后面是密码
#chmod 777 要同步的目录 //修改要同步的目录的权限,否则会报错
启动
#/usr/bin/rsync –daemon –config=/etc/rsyncd.conf
关闭
#lsof –i :873 //这里可以得到PID号
#kill -9 pid
我给的网址里面有更加详细和好的关闭方法,可以去看看
客户端配置:
先安装好rsync
启动
#touch /etc/rsyncd.conf //这里必须建立这个文件,不然无法启动rsync
#/usr/bin/rsync –daemon
#touch /etc/rsyncd/rsyncd.secrets
#vim /etc/rsyncd/rsyncd.secrets
密码 //这里的密码和服务器端的密码一样
注意事项:
这里必须保证服务器端和客户端能互相通信
我们将两台电脑的873端口要打开,不然会报错
#vim /etc/sysconfig/iptables
加入
-A INPUT –m –state NEW –m tcp –p tcp –dport873 –j ACCEPT
注意这里两台电脑都要加入,不然会报错。
同步:
rsync –vzrtopg –delete 客户端要同步到服务器的目录 配置文件中的auth users@ip地址::模块名--password-flie=/etc/rsyncd.secrets
这里是将客户端的同步到服务器上,--delete表示差异同步,没有的会被删除掉,服务器端和客户端保持一致,如果不需要这样就将—delete删除
rsync –avzP –delete 配置文件中的authusers @ip地址::模块名–password-file=/etc/rsyncd.secrets
这里是将服务器的同步到客户端上,和上面的同理
下面是通过ssh将远程服务器同步到本地
下面是通过ssh将本地同步到远程服务器
下面是一些rsync一些参数的用法,在百度知道中有更加详细的参数用法
ps:2018年7月2日
没想到会再次用到这个博客。再次遇到了很多坑,这里记录一下,rsync的conf有一定的顺序问题,顺序恰当可以免密码直接开始同步。
这样子配置就不会输入密码,不用带--password-file这个参数,也不用在客户端里创建secrets文件。
上面这个图中如果auth user在上面这个位置就不用输入密码,如果在我下面的注释的这个位置就需要输入密码
rsync中的参数
-r 是递归
-l 是链接文件,意思是拷贝链接文件;-p 表示保持文件原有权限;-t 保持文件原有时间;-g 保持文件原有用户组;-o 保持文件原有属主;-D 相当于块设备文件;
-z 传输时压缩;
-P 传输进度;
-v 传输时的进度等信息,和-P有点关系,自己试试。可以看文档;
-e ssh的参数建立起加密的连接。
-u只进行更新,防止本地新文件被重写,注意两者机器的时钟的同时
--progress是指显示出详细的进度情况
--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致
--password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读。
可能中间可能会出现一些错误,可以参看错误处理。下面是网址和我参看的一些资料
详情可参考:http://www.linuxidc.com/Linux/2012-12/75995.htm#实现同步
http://www.poluoluo.com/server/201309/241711.html#错误处理
http://www.cnblogs.com/itech/archive/2009/08/10/1542945.html#较全的命令使用方法