centos-通过rsync实现文件同步
一、服务器端配置:
1 | yum -y install xinetd rsync |
将如下代码:
1 | service rsync |
中的disable = yes改成disable = no. 然后启动 xinetd:
1 | /etc/init.d/xinetd start |
注意:如果服务器上装有防火墙记得要打开端口,默认端口是873.
1 | telnet 127.0.0.1 873 |
设置防火墙规则:
1 | iptables -A INPUT -s 192.168.0.0/255.255.255.0 -p tcp -m tcp --dport 873 -j ACCEPT |
编辑配置文件:
1 | vi /etc/rsyncd.conf (这个文件如果不存在自己创建) |
修改:
1 | vi /etc/rsyncd.secrets |
给文件正确的权限
1 | chown root:root /etc/rsyncd.secrets |
二、client 端进行同步 客户端默认好像已经装了rsync,没有的话装下:
1 | yum -y install rsync |
执行异步同步操作:
1 | /usr/bin/rsync -avz --progress rsync@192.168.3.191::backup /www |
下面这个命令完整一点:
1 | vi /etc/rsyncd.pas |
加入密码:
1 | rsyncofpass |
注意,客户端的密码文件只需要密码,而不需要用户名! 更改文件权限:
1 | chmod 0600 /etc/rsyncd.pas |
这个命令行中-vzrtopg里的v是verbose.
1 | z是压缩传输, |
后面的rsync_user@192.168.0.2::rsync_module_name1中,之后的rsync_module_name1是模块名, 也就是在/etc/rsyncd.conf中自定义的名称,rsync_user是指定模块中指定的可以同步的用户名. 最后的/www是备份到本地的目录名. 在这里面,还可以用-e ssh的参数建立起加密的连接. 可以用–password-file=/password/path/file来指定密码文件,这样就可以在脚本中使用而无需交互式地输入验证密码了,这里需要注意的是这份密码文件权限属性要设得只有属主可读.
1 | /usr/local/rsync/bin/rsync -vzrtopg –progress –delete rsync_user@192.168.0.2::rsync_module_name1 /tmp/ |
或者你也可以制定password文件. 由于需要系统crontab执行,所以这里采用读入密码文件的方式,这个时候就成功了.